为什么ASP.NET MVC忽略了我的尾随斜杠?

时间:2009-06-22 12:48:12

标签: asp.net-mvc asp.net-mvc-routing

考虑以下路线:

    routes.MapRoute(
        "Service", // Route name
        "service/", // URL with parameters
        new {controller = "CustomerService", action = "Index"} // Parameter defaults
        );

使用Url.Action("Service", "CustomerService")生成的网址为/service而不是预期的/service/

有没有办法让这个工作,或者我是否必须求助于实现我自己的RouteBase派生的路由?

2 个答案:

答案 0 :(得分:4)

Legenden - 没有立即解决问题的办法。您可能已经遇到过关于此问题的Jason Young's blog post,这非常有用。 Scott Hanselmann posted a reply在这里,基本上说他不认为这是一个大问题,如果是,你可以利用新的IIS7重写模块来解决它。

最终,您可能希望查看murad在StackOverflow上发布的类似问题的解决方案:Trailing slash on an ASP.NET MVC route

答案 1 :(得分:-5)

在您的页面加载事件中添加:

Dim rawUrl As String = HttpContext.Current.ApplicationInstance.Request.RawUrl
If Not rawUrl.EndsWith("/") Then
    HttpContext.Current.ApplicationInstance.Response.RedirectPermanent(String.Format("~{0}/", rawUrl))
End If