首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC 2问题-路线上的点

ASP.NET MVC 2问题-路线上的点
EN

Stack Overflow用户
提问于 2011-04-20 15:05:09
回答 3查看 1.5K关注 0票数 5

我正忙着,需要一只快速的手。谷歌让我失望了。我正在用ASP.NET MVC替换WCF/REST初学者工具包。我希望尽可能不痛苦地进行转换,因此我尝试创建一个与以下URL匹配的路径:

代码语言:javascript
复制
http://localhost/services/MyService.svc/UserInfo

我在Global.asax.cs中创建了路由:

代码语言:javascript
复制
routes.MapRoute(
            "MyServiceDefault",
            "services/MyService.svc/{action}/{id}",
            new { 
                  controller = "MyService", 
                  action = "UserInfo", 
                  id = UrlParameter.Optional 
                }
        );

我很快就意识到,由于URL中的.部分中的MyService.svc,请求甚至没有发送到我的应用程序。

我缺少什么来强制请求传递给我的应用程序,而不是由服务器作为静态资源处理?

更新

我忘记提到,我也尝试将以下内容添加到Web.config中,但没有结果:

代码语言:javascript
复制
<httpRuntime relaxedUrlToFileSystemMapping="true" />
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-20 15:33:51

事实证明,寻找正确的组合词最终会产生结果。菲尔·哈克实际上有一篇关于这个问题的帖子:

用路由覆盖.svc请求

事实证明,对于*.svc扩展来说,仅仅向Web.config添加<httpRuntime relaxedUrlToFileSystemMapping="true" />是不够的。

在其中一个框架Web.config文件中,有一个与*.svc相关联的构建提供程序,它在请求到达.NET MVC之前接管请求(并且失败,因为这实际上不是.NET服务)。一旦您知道了这一点,就可以很容易地删除应用程序的Web.config中的构建提供程序:

代码语言:javascript
复制
<system.web>
  <compilation debug="true" targetFramework="4.0">
    <buildProviders>
      <remove extension=".svc"/>            
    </buildProviders>
    ...
</system.web>
票数 5
EN

Stack Overflow用户

发布于 2011-04-20 15:08:46

看看RouteCollection.RouteExistingFiles属性。默认情况下,此设置为false。可能是您的服务位于项目中的服务路径下,这导致了问题。

票数 0
EN

Stack Overflow用户

发布于 2011-04-20 15:33:07

这个文章告诉您如何使用asp.net mvc应用程序使用不同的扩展,并且仍然将它们路由到.NET框架。特别要注意开头的部分

代码语言:javascript
复制
This is done using a script named registermvc.wsf.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5732507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档