1

我最近刚刚在我的 ASP.NET MVC4 项目中添加了一个名为 ServerInfoController 的新 ApiController(我已经在 Controllers 文件夹中添加了一个 ApiController)。我使用 CRUD 模板选项创建了这个;这是它的样子:

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 }
            );
        }
4

1 回答 1

1

您不需要路线中的 {action} 部分。这是默认路由:

public static void Register(HttpConfiguration config)
{
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}
于 2013-03-07T21:44:55.677 回答