[英]ASP.NET MVC 2 Issue - Dot in Route
我要消隐,需要快速帮助。 Google让我失败了。 我正在用ASP.NET MVC替换WCF / REST入门工具包。 我想让转换尽可能轻松,所以我试图创建一个路由来匹配以下URL:
http://localhost/services/MyService.svc/UserInfo
我在Global.asax.cs中创建了路由:
routes.MapRoute(
"MyServiceDefault",
"services/MyService.svc/{action}/{id}",
new {
controller = "MyService",
action = "UserInfo",
id = UrlParameter.Optional
}
);
我很快意识到,由于,请求甚至没有发送到我的应用程序中.
在网址的MyService.svc
部分中。
我缺少什么来迫使请求传递到我的应用程序,而不是由服务器作为静态资源处理?
更新资料
我忘了提一下,我也曾尝试将以下内容添加到Web.config中无济于事:
<httpRuntime relaxedUrlToFileSystemMapping="true" />
事实证明,搜索正确的术语组合最终会产生结果。 菲尔·哈克(Phil Haack)实际上有一篇有关此确切问题的大文章:
事实证明,对于* .svc扩展名,仅向Web.config中添加<httpRuntime relaxedUrlToFileSystemMapping="true" />
是不够的。
在一个框架Web.config文件中,有一个与* .svc关联的生成提供程序,该提供程序在请求到达.NET MVC之前接管了该请求(并且由于它不是真正的WCF服务而失败)。 知道这一点之后,就很容易在应用程序的Web.config中删除构建提供程序:
<system.web>
<compilation debug="true" targetFramework="4.0">
<buildProviders>
<remove extension=".svc"/>
</buildProviders>
...
</system.web>
看一下RouteCollection.RouteExistingFiles属性。 默认情况下,它设置为false。 可能是您的服务位于项目中“服务”路径下,这导致了问题。
本文告诉您如何在asp.net mvc应用程序中使用不同的扩展名,并仍然使它们路由到.NET框架。 特别注意开头的部分
This is done using a script named registermvc.wsf.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.