1

使用 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 页面也是如此)。这修复吗?或者这是一个稍后会咬我的黑客/结块?

4

1 回答 1

1

在您的 RouteConfig.cs 文件中添加以下行

routes.IgnoreRoute("{*x}", new { x = @".*\.asmx(/.*)?" }); 

我从https://stackoverflow.com/a/17058251/2318354获得了解决方案

这工作正常

于 2013-10-09T12:20:25.777 回答