为什么 IIS 中的 href URL 显示 "HTTP Error 404.0 - Not Found" 错误? (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 App 发布到 IIS,它确实打开了我的前两个页面(登录和主页),
但是在我的导航栏中,我有多个菜单(链接 <a>
)和 href。(例如 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 }
);
}
Link 在导航栏上
<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>
干杯
我将 ASP.NET MVC Web App 发布到 IIS,它确实打开了我的前两个页面(登录和主页),
但是在我的导航栏中,我有多个菜单(链接 <a>
)和 href。(例如 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 }
);
}
Link 在导航栏上
<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>
干杯