Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET Web服务:对我的XmlHttp的一个调用将导致一个双重请求_Asp.net_Web Services_Request_Xmlhttprequest - Fatal编程技术网

ASP.NET Web服务:对我的XmlHttp的一个调用将导致一个双重请求

ASP.NET Web服务:对我的XmlHttp的一个调用将导致一个双重请求,asp.net,web-services,request,xmlhttprequest,Asp.net,Web Services,Request,Xmlhttprequest,我的Web服务有一个非常奇怪的问题: 这是一个典型的/标准的ASP.NETV4WebService,叫做ViaGet 一切正常,但今天我做了一个跟踪,因为我设置了一个customn http模块 在这个http模块中,我在begin/end请求中加入了一些日志调用 在查看日志时,我可以看到,如果我的服务被clients JS方法调用一次,实际上会向webservice发出两个请求 http模块也为标准ASP.NET winform页面运行,我没有这个问题-它只在调用Web服务时发生 是否有人知道

我的Web服务有一个非常奇怪的问题:

这是一个典型的/标准的ASP.NETV4WebService,叫做ViaGet

一切正常,但今天我做了一个跟踪,因为我设置了一个customn http模块

在这个http模块中,我在begin/end请求中加入了一些日志调用

在查看日志时,我可以看到,如果我的服务被clients JS方法调用一次,实际上会向webservice发出两个请求

http模块也为标准ASP.NET winform页面运行,我没有这个问题-它只在调用Web服务时发生


是否有人知道是什么导致了此问题?

重定向可能导致此行为,例如在无斜杠URL的末尾添加斜杠。此外,许多身份验证方案可能需要两个请求。如果我站在你的立场,我会查看请求的内容和标题,看看里面有什么

此外,您可能希望在客户端上运行Fiddler或任何其他网络跟踪器,如Firebug或IE dev工具栏,以验证客户端是否实际发出了两个请求。可能是您在HttpModule中有日志代码的地方,可能是多个调用都是自然发生的地方,例如,一次用于标题,一次用于正文

好的, 这不是最终解决方案,而是一个很好的解决方案:

问题是:

在客户端JS调用webservice模块的情况下,函数执行两次,因为模块运行了两次:一次用于CurrentHandler==TransferRequestHandler,第二次调用中会话状态可用,然后由CurrentHandler==Script/ASPX/Handler处理

直到现在我才知道原因是什么,但我只是通过在第一次运行时返回/不执行特定于HttpModule的东西来解决它

因此,它可以正常工作,但我仍在寻找解释,为什么在WebService调用的情况下会调用两次HttpModule PreExecute/PostExecuteRequestHandler,而在单个/标准ASP.NET页面请求的情况下不会调用两次


问候

Hi Justin,请求末尾加了一个斜杠http://localhost/XRSF.asmx/RMG?Param1=0&Param2=0/ -使服务崩溃。。。提琴手,好的-我会尝试作为下一个选择!好的,正如您所建议的,我尝试了Fiddler-事实上,它只显示了每个Web服务调用的一个请求。。。奇怪的是,它一定在http模块->我如何才能找到更多关于您的第二个技巧的信息,关于多个运行http模块的地方是自然的?我在PreRequestHandlerExecute和PostRequestHandlerExecute中做http模块日志记录——而且:似乎这两个请求都是级联的,因为在调用第一个调用Post…Execute之前,我有两个调用Pre…Execute,它们紧跟在一起。还有别的想法吗?ThxOK,一些进一步的调查显示,它似乎与请求调用中的keep alive内容有关。仍然没有运气,我在网上发现了一些线程,一些人遇到了相同的问题;对WebResource.axdan的初始调用也会双重调用codepreq…代码。我发现的另一件事是:当第一次调用发生时,HttpContext.Current.Session为null/不可用,但对于第二次调用,Session状态可用。