2013-03-07 83 views
1

我剛剛添加了一個新的ApiController到我的ASP.NET MVC4項目(我已經有一個ApiController也在Controllers文件夾中),名爲ServerInfoController。我使用CRUD模板選項創建了它;下面是它的樣子:ASP.NET Web API返回代碼404與新創建的ApiController

using System.Collections.Generic; 
using System.Net; 
using System.Net.Http; 
using System.Web.Http; 
using WebFrontend.Models; 

namespace WebFrontend.Controllers 
{ 
    public class ServerInfoController : ApiController 
    { 
     // GET api/serverinfo 
     public Dictionary<string, string> Get() 
     { 
      var settings = GlobalStaticVars.StaticCore.LoadServerSettings("Last", "Server"); 

      if (settings != null) 
      { 
       return new Dictionary<string, string> 
             { 
              {"ServerIP", settings.Address}, 
              {"ServerPort", settings.Port.ToString()} 

             }; 
      } 
      return new Dictionary<string, string> 
            { 
             {"ServerIP", ""}, 
             {"ServerPort", ""} 
            }; 
     } 
    } 
} 

但是,每次我嘗試導航到瀏覽器中的資源時,都會收到404錯誤。我知道我的路由已正確註冊,因爲我的其他控制器仍然可以在/ api端點訪問。

以下是在WebApiConfig.cs配置(這是缺省路由)的路由:您不需要在路由{}行動部分

public static void Register(HttpConfiguration config) 
     { 
      config.Routes.MapHttpRoute(
       name: "ActionApi", 
       routeTemplate: "api/{controller}/{action}/{id}", 
       defaults: new { id = RouteParameter.Optional } 
      ); 
     } 
+0

您可以顯示您的網絡API的路線?此外最新的網址你打電話。 – gdp 2013-03-07 20:55:15

+0

完成。我在上面添加了它。此外,我打電話的URL將是類似於http:// localhost:66555/api/serverinfo – wibarr 2013-03-07 20:56:40

回答

1

。這是默認路由:

public static void Register(HttpConfiguration config) 
{ 
    config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{id}", 
     defaults: new { id = RouteParameter.Optional } 
    ); 
} 
+1

Gotcha;謝謝!我通過將動作部分設置爲RouteParameter.Optional來計算出類似的情況。 – wibarr 2013-03-07 21:51:59