使用 VS2012 单击基本 Web 服务页面 (webservice.asmx) 的“调用”按钮后出现 404 错误。
我在谷歌上搜索并发现许多对 web.config 和/或 IIS 中配置的引用与处理没有扩展名的请求有关,包括:Getting 404 error on MVC web-site
那篇文章指出问题可能是 IIS 中的请求过滤配置(我的配置是正确的)。
另一位受访者表示通过将其添加到 web.config 来解决问题
<system.webserver>
<modules runAllManagedModulesForAllRequests="true"/>
当我添加这个时,它并没有解决我的问题。修复它的方法是从 system.webserver 部分中删除以下内容:
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
我修改后的 web.config 部分现在看起来像这样:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
我的 Web 服务现在提供服务(我的 MVC 页面也是如此)。这是修复吗?或者这是一个稍后会咬我的黑客/结块?