我的一个API控制器上有一个POST方法,它接受一个字符串值:
public string Post([FromBody] string foo) {
return(fooOracle.ValidateFoo(foo) ? "success" : "failure");
}
我正在使用帖子请求的正文发布到:
foo=123412341234
(即,您可以通过提交浏览器表单以及使用HTTP客户端来启动常规HTTP POST)
在WebAPI的候选版本中,它已经默默地停止工作 - 它只是不再绑定foo。为了使代码正常工作,我必须用这个代替方法:
public string Post(FormDataCollection form) {
var foo = form.Get("foo");
return(fooOracle.ValidateFoo(foo) ? "success" : "failure");
}
这个有效,但它有点混乱,涉及比以前版本更多的管道测试。
我是否遗漏了一些微妙的变化,或者是否已弃用[FromBody]绑定语法而支持这种相当冗长的绑定语法?该属性仍然存在,但它真的不清楚它在RC版本中的实际作用。
答案 0 :(得分:1)
实际上有一个微妙的变化,它无法处理像'foo = 123412341234'这样的输入,但会处理'= 123412341234'作为输入。你可以让客户端发送它吗?
如果没有,你可以创建一个如下所示的包装类,并使你的行为期望stringwrapper作为参数而不是String本身。
Class StringWrapper {public string Foo {get;设置;}}