繁体   English   中英

ASP.NET MVC 2问题-路径中的点

[英]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请求

事实证明,对于* .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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM