ASMX操作返回404错误,但ASMX服务描述并未返回错误,是否与URL路由有关?
ASMX操作返回404错误,但ASMX服务描述并未返回错误,是否与URL路由有关?
我发现自己遇到了一个难题。我们的应用程序中有一些旧的asmx web服务,长期以来都运行良好。
突然间,在构建服务器(CI)上它们停止工作了。我说停止工作,是因为当我导航到服务时,服务描述会显示出来,但调用任何操作都无法路由到该服务(Web表单路由)。在我尝试修复这个问题的过程中出现了两个奇怪的问题。
1.) 在存储所有待处理的更改,从TFS获取最新版本,并进行本地构建之后(除非我弄错了,否则这将得到与构建服务器上相同的内容,因为我们在每次检入时进行构建/推送)。我注意到我无法在本地复制出这个错误。
2.) 即使我无法在本地复制出这个错误,我仍然怀疑是路由的问题,但我们所有服务的路由都是首先添加到表中的,格式如下:"{service}.asmx/{*pathInfo}"
,我猜这是作为一种安全预防措施添加的,因为像MyService.svc这样的东西根本不应该进入路由器,因为该文件实际上是存在的,尽管我不确定这条规则是否适用于MyService.svc/MyMethod。
我不太确定如何测试路由,即在哪里设置断点以了解是否针对特定请求经过了路由表,所以任何在这方面的指导都将不胜感激,同时也欢迎任何关于为什么会发生这种情况的其他想法。
谢谢!
我刚刚遇到了同样的错误,在查找这个stackoverflow条目时绊倒了: Handlers returns 404 error on IIS7.5 integrated pipeline,并尝试了在web.config的webServer部分添加asmx处理程序的解决方案:
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>
<handlers>
<add verb="*" path="*.asmx" name="asmx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</handlers>
</system.webServer>
浪费了几个小时,我只需要这个解决方案吗? X(
问题出现的原因是URL路由问题,ASMX操作返回404错误,但ASMX服务描述却没有问题。解决方法是在web.config文件的webServer部分中添加asmx处理程序。这个处理程序的路径是*.asmx,名称为asmx,类型为System.Web.Script.Services.ScriptHandlerFactory,所属程序集为System.Web.Extensions, 版本为4.0.0.0。添加这个处理程序后,ASMX操作将能正常工作。