更改ASP.NET MVC或IIS中的URL根路径

时间:2015-05-09 12:53:53

标签: asp.net asp.net-mvc iis url-rewriting iis-8.5

我正在使用带有自定义网址的服务器:http://example.com/site/正如您所看到的,我需要将应用程序的默认根路径(" /")更改为防止404错误。使用具有出站规则的IIS重写模块似乎有效,所有html链接和引用都正确转换为查询内部网站。问题是当我的控制器中使用Redirect()RedirectToAction()方法时,网站的内部名称将被删除,从而导致404。这是我的IIS出站规则:

<rewrite>
  <outboundRules>
    <rule name="Add path prefix to urls" stopProcessing="true">
      <match filterByTags="A, Form, Img, Link, Script" pattern="^/(.*)" />
      <action type="Rewrite" value="/site{R:0}" />
    </rule>
  </outboundRules>
</rewrite>

所以澄清一下:当帐户/登录重定向时,我有http://example.com/site/,它变为http://example.com/account/login而不是http://example.com/site/account/login。我想RouteConfig必须修补,但我不知道如何,或者我是否可以在IIS中执行此操作。我在RouteConfig类中有以下内容:

routes.MapRoute(
    name: "SiteRoot",
    url: "site/{controller}/{action}",
    defaults: new { controller = "Home", action = "Index" }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}",
    defaults: new { controller = "Home", action = "Index" }
);

谢谢。

1 个答案:

答案 0 :(得分:0)

假设问题仅适用于受授权注释保护的页面,您可能需要更新/App_Start/Startup.Auth.cs文件以更改登录路径。您正在寻找您将LoginPath = new PathString("/Account/Login"),更改为LoginPath = new PathString("/site/Account/Login"),的{​​{1}}。在我测试的MVC 5启动站点中,在第28行。

在我使用重定向规则和路由配置进行测试时,正常RedirectToAction工作正常,但如果您遇到问题,可以尝试删除&#34;默认&#34;路由映射,以便在尝试重定向时路由器不会选择URL结构。