来自ASP.Net PageMethod Call的访问响应标头

时间:2010-01-08 18:35:12

标签: asp.net javascript ajax httpwebrequest

使用ASP.Net Ajax调用PageMethods时,如何从“success”方法访问Http响应头?

例如:

PageMethods.DoSomething(
   function(result){successMethod(result)},
   function(error){errorMethod(error)}
);

function successMethod(result){
    //------how can I access the Http response headers from here? ------
}

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

在您的示例中,如果是一个asp.net Web服务代理,PageMethods.DoSomething应该具有等于WebRequest的返回值。提供此选项是为了您可以在启动请求后对其进行操作(即取消请求等)。

使用此类,您可以使用add_completed方法,以便在Web请求完成时添加处理程序。回调签名为function OnWebRequestCompleted(executor, eventArgs),此中的executor参数使您可以获取额外的响应信息。例如,您可以使用executor.getAllResponseHeaders()获取响应标头;它应该是标题名称和值的映射(命名集合)。

因此,如果您在进行服务方法调用后立即向Web请求的已完成事件添加处理程序,它应该可以工作(世界上没有任何Web服务能够比连续两行代码响应更快!)。

之前的WebRequest超链接包含了如何连接它的完整示例。但请注意,此代码直接使用WebRequest。

Asp.Net Ajax Web服务代理类使用WebServiceProxy类,每个代理方法最终调用其invoke方法,该方法返回WebRequest实例。

答案 1 :(得分:0)

Web请求具有标头集合

http://msdn.microsoft.com/en-us/library/bb383774.aspx

webrequestmanager是一个静态对象,您可以从以下位置提取此信息:

http://msdn.microsoft.com/en-us/library/bb397435.aspx

希望在两个链接之间有意义: - ;

我不是说重新编码必须使用它,但页面方法是一个包装器,因此我认为它将从Web请求访问信息,这可能会受到WebRequestManager的影响......