从ASP.Net PageMethod调用访问响应头

从ASP.Net PageMethod调用访问响应头,asp.net,javascript,ajax,httpwebrequest,Asp.net,Javascript,Ajax,Httpwebrequest,当使用ASP.NETAjax调用PageMethods时,如何从“success”方法访问Http响应头 例如: PageMethods.DoSomething( function(result){successMethod(result)}, function(error){errorMethod(error)} ); function successMethod(result){ //------how can I access the Http response he

当使用ASP.NETAjax调用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? ------
}

感谢您的帮助

web请求包含标题集合

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

希望在这两个链接之间,它是有意义的:-


我并不是说一定要使用重新编码,但页面方法是一个包装器,因此我认为它可以访问web请求中的信息,这可能会受到WebRequestManager的影响…

在您的示例中,PageMethods.DoSomething的返回值应该等于它是否是asp.net web服务代理。这是为了您可以在启动请求后操作请求(即取消请求等)

在这个类中,您有一个add_completed方法,您可以使用它在web请求完成时添加处理程序。回调的签名是
函数OnWebRequestCompleted(executor,eventArgs)
,其中的
executor
参数使您能够获得额外的响应信息。例如,您可以使用
executor.getAllResponseHeaders()
;它应该是标题名称和值的映射(命名集合)

因此,如果在调用服务方法后立即向web请求的completed事件添加处理程序,它应该可以工作(世界上没有任何web服务的响应速度超过连续两行代码!)

上一个指向的超链接包含如何将其连接起来的完整示例。但是,请注意,此代码直接使用WebRequest


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

谢谢。唯一的问题是,我不能保证我得到的请求与成功方法相关联的请求是相同的。如果有很多asyn请求同时进行,我可能会得到一个不同的请求,或者在调用success方法时请求本身可能已经完成。我真的需要一种方法来访问该特定调用的响应头。如果我重新编码以使用jQuery库进行调用,我可以选择这样做,但我确实希望使用.net库来保持一致性。