ASP.NET MVC路由,其值在控制器之前且没有尾部斜杠

格伦·斯拉文(Glenn Slaven)

这可能是一个简单的问题,但我无法使其正常工作。

我在RouteConfig中指定了此路由

routes.MapRoute(
    name: "DefaultSiteRoute",
    url: "{accountid}/{hostname}/{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, accountid = UrlParameter.Optional, hostname = UrlParameter.Optional  }
);

而且对于这样的网址也可以正常工作

/123456/www.test.com/

或这个

/123456/www.test.com/Controller/Action

但这不能应付

/123456/www.test.com

我得到一个IIS 404

奇怪的是,如果我Url.Action使用默认的Controller and Action(即Home / Index)调用该路由,它将创建一个没有尾随斜杠的url,然后它无法识别。无论是否有斜杠,我真的都需要它来工作。

失落的计算机

问题是ASP.net 4.0无法路由以MVC扩展名结尾的URL。他们这样做是为了加快对静态文件的请求。看到这个链接

你可以做什么:

1)配置UrlRoutingModule路由所有托管和非托管请求(默认仅路由托管请求)。

缺点:可能会降低性能。

<system.webServer>
    <modules>
     <remove name ="UrlRoutingModule-4.0"/>
      <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="runtimeVersionv4.0" />
    </modules>
<system.webServer>

2)配置为处理.com,.net。组织等扩展

缺点:感觉像黑客一样。

   <system.webServer>
       <handlers>
          <add name="UrlRoutingHandler"
           type="System.Web.Routing.UrlRoutingHandler, 
                 System.Web, Version=4.0.0.0, 
                 Culture=neutral, 
                 PublicKeyToken=b03f5f7f11d50a3a"
                 path="*.com"
                 verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"/>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

没有控制器或动作名称的ASP.NET MVC路由

asp.net 核心“没有路由与提供的值匹配”与控制器级路由值

asp.net核心控制器操作路由使用编码的斜杠确定路由(仅IIS)

带有ASP.NET MVC属性路由的控制器级别参数

在ASP.NET MVC中为所有控制器之间的路由设置顺序

如何忽略ASP.NET MVC路由中“控制器/动作”之后的所有字符?

ASP.Net MVC在没有专用按钮的情况下将值传递给控制器

在ASP.NET MVC的控制器中没有序列化的select2值

为什么我没有在ASP.Net MVC控制器中获取AJAX数据?

Mvc的ASP.NET路由集成:控制器/动作到路由的解决方案

ASP.Net MVC 控制器初始化其构造函数的时间太长

同名控制器的asp.net Web API路由

有没有很好的示例在ASP.NET Core MVC控制器中处理ServiceStack验证错误?

当在 asp.net mvc 中首先无法识别控制器时,如何路由到控制器?

ASP.NET MVC 5动态控制器路由

ASP.NET MVC-嵌套路由/控制器

ASP.NET MVC 路由不适用于特定控制器

未在 Asp.Net Core MVC 控制器操作中提取路由 ID

ASP.Net MVC @ Url.Action()路由到错误的控制器

在ASP.Net MVC中的控制器中访问路由URL

如何从角度路由中删除ASP.NET MVC控制器名称

ASP.NET MVC路由-映射操作而不是控制器

使用 ASP.NET MVC 属性路由验证和传递控制器级参数

Asp Net Mvc 路由,无需对多个控制器进行操作

实例化控制器之前进行ASP.NET MVC身份验证

ASP.NET MVC 控制器在返回响应之前等待模型

我如何配置ASP.NET Core路由以路由到控制器(没有可选动作)(如果存在),然后回退到默认路由?

asp.net 核心路由值到基本控制器和可选的覆盖操作

Asp.NET Web API显示所有控制器的路由