2015-04-02 90 views
0

在一個MVC 5 Webapi項目中,我試圖通過使用URL'api/controllerName'的jquery執行GET請求。該Web應用程序託管在默認網站下,網站的根目錄是「localhost/myApp」。IIS 8.5 MVC 5 Routes'api/controllerName'給出404未找到錯誤

將路由'api/controllerName'轉換爲'localhost/api/controllerName'而不是'localhost/myApp/api/controllerName'拋出404找不到錯誤

這必須做一些與IIS 8.5和MVC 5路由,這是因爲:

  1. 相同的設置上順暢運行IIS 7.5
  2. 設定了相同的作品以及在IIS 8.5,如果我不使用一個虛擬目錄並直接在Default Web Site上託管應用程序。

我的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 } 
     ); 

    } 
+0

如果它在分配給默認網站的文件夾中(默認爲'c:\ inetpub \ wwwroot'),但不在其他文件夾中,那麼您似乎沒有在IIS中正確設置網站。我不認爲你可以假設,如果你發佈你的web應用到c:\ inet \ wwwroot \ myApp,然後你可以在瀏覽器中用'http:// localhost/myApp'訪問它,相反,你需要設置在IIS綁定對話框中的例如不同的端口上的網站。 – 2015-04-06 05:35:25

回答

1

我想通了這一點。顯然,IIS 7.5在裸路由'api/controllerName'下運行良好,但IIS 8.5需要一個使用@ Url.RouteURL實用工具創建的完全合格的路由,路由名稱爲「DefaultApi」。

我取代的URL以

'@Url.RouteUrl("DefaultApi", new { httproute = "", controller = "controllerName"})' 

和它的工作就像一個魅力(在兩個IIS 7.5和IIS 8.5)。