In my ASP.NET MVC 4 application's RouteConfig
file, I have registered the following default route:
routes.MapRoute("Default", "{controller}/{action}/{id}",
new { controller = "home", action = "index", id = UrlParameter.Optional });
Now, in my Razor views, I want to generate a URL to my application's root like that:
<a href="@Url.Action("index", "home")">Home</a>
The generated URL includes a trailing slash; clicking the link thus opens the page localhost/IISApplicationName/. However, I want the URL not to contain the trailing slash so that the URL is localhost/IISApplicationName. Generating routes for other actions, such as /Account/Login, does not create URLs with trailing slashes — it's just about the route linking to my application's root.
Is there any way to prevent ASP.NET MVC routing from appending the trailing slash to the above route?
(I know that I can redirect from the URL including the slash to the one without it, but I'd rather have routing generate the correct route URL in the first place.)
Is there any way to prevent ASP.NET MVC routing from appending the trailing slash to the above route?
You should pass a trailing slash when the relative path is empty. If you somehow generate links with href localhost/IISApplicationName
still the browser appends a "/" at the end (you can easily verify this in firebug, just type http://stackoverflow.com in the browser address bar and check the requests tab you can see the trailing "/").
This is because as per the HTTP/1.1,
the absolute path cannot be emtpy; if none is present in the original URI, it mut be given as "/" (the server root).
http://www.faqs.org/rfcs/rfc2616.html#ixzz0kGcaRbqU (section 5.1.2)
I recommend URL Rwrite Outbounds rules.
Sample config:
<rewrite>
<outboundRules>
<rule name="RewriteSlash">
<match filterByTags="A" pattern="^/IISApplicationName/$" />
<action type="Rewrite" value="/IISApplicationName" />
</rule>
</outboundRules>
</rewrite>
来源:https://stackoverflow.com/questions/11325425/remove-trailing-slash-in-asp-net-mvc-4-route-to-application-root