IIS 8.5 MVC 5路由'api / controllerName'给出404未找到错误

时间:2015-04-02 11:09:23

标签: asp.net-mvc-5 iis-8.5

MVC 5 Webapi 项目中,我正在尝试使用URL' api / controllerName'通过jquery执行GET请求。 Web应用程序托管在默认网站下,网站的根目录是" localhost / myApp"。

路线' api / controllerName'被翻译成' localhost / api / controllerName'而不是' localhost / myApp / api / controllerName'投掷 404未找到错误

这必须对IIS 8.5和MVC 5路由做一些事情,因为:

  1. 相同的设置适用于IIS 7.5
  2. 如果我不使用虚拟目录并直接在默认网站上托管应用程序,则相同的设置在IIS 8.5上运行良好。
  3. 我的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 }
            );
    
        }
    

1 个答案:

答案 0 :(得分:1)

我想出来了。显然,IIS 7.5在裸路由'api / controllerName'上运行良好,但是IIS 8.5需要使用@ Url.RouteURL实用程序创建的完全限定路由,RouteName为“DefaultApi”。

我用

替换了网址
'@Url.RouteUrl("DefaultApi", new { httproute = "", controller = "controllerName"})'

它就像一个魅力(在IIS 7.5和IIS 8.5上)。