在一个MVC 5 Webapi项目中,我试图使用URL 'api/controllerName‘通过jquery完成一个GET请求。web应用程序托管在默认的网站下,而Website的根是"localhost/myApp“。
路由'api/controllerName‘被转换为’localhost/api/控制员名称‘,而不是’localhost/myApp/api/控制员名称‘抛出404未找到错误。
这与IIS 8.5和MVC 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 }
);
}发布于 2015-04-07 06:27:05
我想出来了。显然,IIS7.5与裸路由'api/controllerName‘工作得很好,但是IIS8.5需要使用@Url.RouteURL实用程序创建一个完全限定的路由,RouteName作为"DefaultApi“。
我将URL替换为
'@Url.RouteUrl("DefaultApi", new { httproute = "", controller = "controllerName"})'它就像一种魅力(在IIS 7.5和IIS8.5上都是如此)。
https://stackoverflow.com/questions/29411457
复制相似问题