【发布时间】:2020-02-24 17:13:04
【问题描述】:
我将我的 ASP.NET MVC Web 应用程序发布到 IIS,它确实打开了我的前两个页面(登录和主页),
但是在我的导航栏中,我有多个带有 href 的菜单(链接 <a>)。(例如 href="/Users/Index")
当我在浏览器中打开我的应用程序时, 它显示:http://localhost/AppName/Home
当我单击导航栏上的菜单项时,它不会添加应用名称,也不会呈现我的视图: http://localhost/User/Index
并发送 HTTP 错误 404.0 - 未找到
显然,如果我手动添加 AppName,它确实会打开视图。
这在 VS IDE 中不会发生,但是当我将其发布到 IIS 时,路由似乎不起作用。
有什么想法吗??
RouteConfig.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional }
);
}
导航栏上的链接
<a href="/User/Index" class="dropdown-toggle"> Users</a>
我的 web.config 确实有:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"></modules>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
【问题讨论】:
-
如果您不向我们展示任何代码,我们怎么能提供帮助?
-
抱歉,我现在编辑了我的评论
-
因为您的应用程序路径与根路径不同。你有 2 种方法来解决这个问题:将应用程序移动到根文件夹或使用 ~/ 而不是 /
-
链接也应该通过带有@Html.Action() 或asp 属性等助手的代码来处理
-
@VeNoMiS 从现在开始,我将不得不对我的所有链接使用@Html.Action(),有趣的是,我已经完成的旧应用程序不会发生这种情况。
标签: c# iis deployment asp.net-mvc-5