2013-03-07 76 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