Web API路由错误从RC到RTM与模型绑定

时间:2012-08-30 22:03:00

标签: asp.net-mvc-4 asp.net-web-api

将rc升级为rtm web api项目

  

简单类型参数的默认参数绑定现在是[FromUri]:在以前的ASP.NET Web API版本中,简单类型参数的默认参数绑定使用了模型绑定。简单类型参数的默认参数绑定现在是[FromUri]。

我相信是导致我变化的变化。

现在我不太确定。 StrathWeb似乎让我觉得应该按原样运作。

鉴于此终点

   [HttpGet]
    public HttpResponseMessage Method(string a, string b)
    {
     ...
    }

我使用

在客户端生成一个网址
@Url.RouteUrl("route", new { httproute = "", controller = "Controller", version = "1" })">

让它为这条路线生成网址。

routes.MapHttpRoute(
name: "route",
routeTemplate: "api/v{version}/{controller}/Method",
defaults: new
{
    action = "Method",
    controller = "Controller",
    version = "1"
});

它创建了网址。网址看起来像

.../api/v1/Controller/Method?optional=z
.../api/v1/Controller/Method?a=x&b=y&optional=z

请求时会抛出404。如果我删除了api控制器中的参数a和b,那么它就可以很好地进入方法了。

制作这些绑定的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

如果您需要'a'和'b'是可选的,那么您需要将它们作为可选参数:

公共HttpResponseMessage方法(字符串a = null ,字符串b = null