ASP.NET Web服务:对我的XmlHttp的一个调用将导致一个双重请求
我的Web服务有一个非常奇怪的问题: 这是一个典型的/标准的ASP.NETV4WebService,叫做ViaGet 一切正常,但今天我做了一个跟踪,因为我设置了一个customn http模块 在这个http模块中,我在begin/end请求中加入了一些日志调用 在查看日志时,我可以看到,如果我的服务被clients JS方法调用一次,实际上会向webservice发出两个请求 http模块也为标准ASP.NET winform页面运行,我没有这个问题-它只在调用Web服务时发生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服务时发生 是否有人知道
是否有人知道是什么导致了此问题?重定向可能导致此行为,例如在无斜杠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状态可用。