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