1

这是我的配置和代码。

public class DeployLogController : ApiController
    {
        // GET /api/DeployLog
        public List<DeployLogModel> Get(Guid deployDetailId, Guid? deployLogId)
        {

            DeployLogService service = DeployLogService.Instance;

            return service.GetNewestDeployLogs(deployDetailId, deployLogId).ToList();

        }

        // POST /api/DeployLog
        public void Post(DeployLogModel deployLogModel)
        {
            DeployLogService service = DeployLogService.Instance;
            service.SavaDeployLogByServer(deployLogModel);
        }

    }

Global.asax.cs 中 Application_Start 的代码如下。

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            routes.MapRoute(
               name: "Default",
               url: "{controller}/{action}/{id}",
               defaults: new { controller = "Login", action = "Login", id = UrlParameter.Optional }
           );

        }

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);

            BundleTable.Bundles.RegisterTemplateBundles();
            Configure(GlobalConfiguration.Configuration);

        }

为什么我访问 Url“http://localhost:8119/api/DeployLog”时收到 400 Http Response 消息。好像是代码

routes.MapHttpRoute(
                    name: "DefaultApi",
                    routeTemplate: "api/{controller}/{id}",
                    defaults: new { id = RouteParameter.Optional }
                );

不起作用。我错过了什么吗?请帮我 。谢谢。

4

2 回答 2

2

使用 Phil Haack 的路由调试器来确定是否命中了正确的路由。

看起来您要么走错了路线,要么您的路线没有与之对应的控制器方法(乍一看,您的设置似乎需要一个名为 GET 的控制器方法,而不是 DeployLog.

于 2012-07-30T03:45:08.047 回答
0

我最近遇到了同样的问题——它是由控制器函数中的不同类型的参数引起的。在我的控制器示例中,有整数参数,但我尝试将字符串作为 Web api 查询的参数。这就是路由不起作用的原因。

于 2014-11-06T17:45:02.160 回答