【发布时间】:2015-06-07 07:40:39
【问题描述】:
在 MVC 5 Webapi 项目中,我尝试使用 URL 'api/controllerName' 通过 jquery 发出 GET 请求。 Web 应用程序托管在默认网站下,网站的根目录是“localhost/myApp”。
路由“api/controllerName”被转换为“localhost/api/controllerName”而不是“localhost/myApp/api/controllerName”抛出404 Not found Error。
这与 IIS 8.5 和 MVC 5 路由有关,因为:
- 相同的设置在 IIS 7.5 上运行良好
- 如果我不使用虚拟目录并将应用程序直接托管在默认网站上,则相同的设置在 IIS 8.5 上运行良好。
我的 Global.asax.cs 的 RegisterRoutes 方法如下所示
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
【问题讨论】:
-
如果它在分配给默认网站的文件夹中工作(默认为 'c:\inetpub\wwwroot'),但不在其他文件夹中,则似乎您尚未在IIS 正确。我不认为您可以假设如果您将 Web 应用程序发布到 c:\inet\wwwroot\myApp',然后您可以在浏览器中使用“localhost/myApp”访问它。相反,您需要在例如,IIS 绑定对话框中的不同端口。
标签: asp.net-mvc-5 iis-8.5