我正在使用带有自定义网址的服务器: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" }
);
谢谢。
答案 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结构。