【问题标题】:Pass Page.Request to a Web Service?将 Page.Request 传递给 Web 服务?
【发布时间】:2013-01-03 08:02:18
【问题描述】:

是否可以将Page.Request 对象传递给 Web 服务?

我需要一个 Web 服务来向浏览器客户端提供数据,但如果没有签名中需要 Page.Request 的对象,我无法检索此数据。

替代方法似乎是创建在查询字符串中接受参数的页面并使用 $.get() 调用它们,这似乎在顶部。

【问题讨论】:

  • 我不知道您是在谈论遗留 Web 服务 (ASMX) 还是通过 HTTP 公开的基于 WCF 的服务,但在这两种情况下,您都可以在服务中获取自己的 Request 对象。
  • 这是一个 WCF 服务。好像没有HttpRequest req = new HttpRequest();那么简单,要怎么做呢?
  • 我添加了一个从工作代码中提取的示例。

标签: c# ajax web-services http httprequest


【解决方案1】:

假设请求是通过 HTTP 发出的(WCF 端点并非总是如此),您只需在代码中使用 HttpContext.Current.Request

[AspNetCompatibilityRequirements( RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed )]
public class MyService {

    [OperationContract]
    public string Foo() {

        var request = System.Web.HttpContext.Current.Request;   
    }
}

【讨论】:

  • 不错。简单的回答。不幸的是,这在这种情况下不起作用,因为它确实返回了一个正确的对象,但它缺少一些 Request.Form 数据。但是,这不是我查询的一部分,所以我将其标记为正确。
  • 您是否使用 HTTP POST 发送数据?如果不是,这可能会导致 Request.Form 集合为空。
  • 这很复杂。它是托管在云中的 SharePoint 应用程序,当您单击它时,会向该应用程序发送一系列令牌。看起来这些令牌在第一个页面加载后不会持续存在。
  • 明白。在这种情况下,也许 HTTP/TCP 嗅探器有助于查看正在发送的内容(以及何时发送)。
  • 感谢蒂姆的超越。为您推荐 Reddit Gold!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多