为什么IIS中的href URL显示“;HTTP错误404.0-找不到“;错误?(ASP.NET MVC#)

为什么IIS中的href URL显示“;HTTP错误404.0-找不到“;错误?(ASP.NET MVC#),c#,iis,deployment,asp.net-mvc-5,C#,Iis,Deployment,Asp.net Mvc 5,我将我的ASP.NET MVC Web应用程序发布到IIS,它确实打开了我的前两个页面(登录和主页), 但是,在我的导航栏中,我有多个菜单(链接 单击导航栏上的菜单项时,它不会添加appname,也不会渲染我的视图: 并发送HTTP错误404.0-未找到 显然,如果我手动添加AppName,它会打开视图 这在VSIDE中不会发生,但当我将其发布到IIS时,路由似乎不起作用 有什么想法吗 RouteConfig.cs public static void RegisterRoutes(Rou

我将我的ASP.NET MVC Web应用程序发布到IIS,它确实打开了我的前两个页面(登录和主页), 但是,在我的导航栏中,我有多个菜单(链接

单击导航栏上的菜单项时,它不会添加appname,也不会渲染我的视图:

并发送HTTP错误404.0-未找到

显然,如果我手动添加AppName,它会打开视图

这在VSIDE中不会发生,但当我将其发布到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>

My 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>

更新

按照VeNoMiS的建议,我将Url.Action插入到所有导航栏菜单项中,将从数据库中获取的Url拆分为每个参数(视图、控制器、区域)

IIS中的所有路由都工作得很好

<a href="@Url.Action(Url.Split('/')[2], Url.Split('/')[1], new { Area = Url.Split('/')[3] })"><span class="@Icon" title="@Icon"></span> @Name</a>


干杯

如果您没有向我们显示任何代码,我们怎么可能提供帮助?抱歉,我现在编辑了我的评论,因为您的应用程序路径与根路径不同。您有两种方法可以解决此问题:将应用程序移到根文件夹或使用~/而不是/还应通过代码与@Html.Action()等帮助程序处理链接或aspattributes@VeNoMiS从现在起,我将不得不对我的所有链接使用@Html.Action(),有趣的是,我以前做过的应用没有出现这种情况。