繁体   English   中英

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

[英]Why href URLs in IIS show "HTTP Error 404.0 - Not Found" error? (ASP.NET MVC C#)

我将我的 ASP.NET MVC Web 应用程序发布到 IIS,它确实打开了我的前两个页面(登录和主页),但是在我的导航栏中,我有多个带有 href 的菜单(链接<a> )。(例如 href="/Users /指数”)

当我在浏览器中打开我的应用程序时,它显示: http://localhost/AppName/Home

当我单击导航栏上的菜单项时,它不会添加应用程序名称,也不会呈现我的视图: http://localhost/User/Index

并发送 HTTP 错误 404.0 - Not Found

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

这在 VS IDE 中不会发生,但是当我将它发布到 IIS 时,路由似乎不起作用。

有任何想法吗??

路由配置文件

  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>

更新!

按照 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>

干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM