Adr*_*nne 5 asp.net iis asp.net-mvc url-rewriting iis-8.5
我正在使用带有自定义网址的服务器:http://example.com/site/,您可以看到我需要更改应用程序的默认根路径("/")以防止404错误.使用具有出站规则的IIS重写模块似乎有效,所有html链接和引用都正确转换为查询内部网站.问题是当我的控制器中使用了a 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>
Run Code Online (Sandbox Code Playgroud)
所以要澄清一下:当帐户/登录重定向时,我有http://example.com/site/,它变成http://example.com/account/login而不是http://example.com/site/帐户/登录.我想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" }
);
Run Code Online (Sandbox Code Playgroud)
谢谢.
小智 0
假设问题仅出现在受授权注释保护的页面上,您可能需要更新/App_Start/Startup.Auth.cs
文件以更改登录路径。您正在寻找LoginPath = new PathString("/Account/Login"),
您将更改为 的内容LoginPath = new PathString("/site/Account/Login"),
。在我测试的 MVC 5 入门站点中,该站点位于第 28 行。
在我使用重定向规则和路由配置进行的测试中,正常RedirectToAction
工作正常,但如果遇到问题,您可以尝试删除“默认”路由映射,以便在尝试重定向时路由器不会选择 URL 结构。