我在IIS7下使用集成管道设置了ASP.Net MVC 2站点,路由如下:
routes.MapRoute(
"MyRoute",
"mycontroller/{name}/{*path}",
new { controller = "MyController", action = "Index", path = UrlParameter.Optional }
);
此路线上方没有其他路线,但每当我尝试使用具有.svc
分机的路径值访问上述路线时,例如:
http://localhost/MyVirtualDirectory/mycontroller/test/somepath.svc
ASP.Net在不执行我的控制器的情况下返回404错误(我在操作方法的开头有一个日志消息调用)。如果我将扩展名更改为良性(例如.txt)它可以完美地工作,那么沿着 ASP.Net 行的某个地方似乎将请求解释为对Web服务的标准ASP.Net调用不存在 - 这绝对是ASP.Net 404响应(不是IIS响应)。
导致这种情况的原因是什么?如何阻止它发生?
答案 0 :(得分:5)
IIS是否配置为服务器.svc文件?您可能需要add the .svc MIME type到IIS
在IIS中
<强>更新强>
您遇到的问题是由于.svc文件注册的构建提供程序。此构建提供程序由默认的机器级web.config文件注册。
更新您的web.config
<system.web>
<compilation debug="true" targetFramework="4.0">
<buildProviders>
<remove extension=".svc"/>
</buildProviders>