在ASP NET Web Api和json请求中使用动态参数时出现奇怪的行为

时间:2014-10-15 17:29:08

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

我真的没有很好的解释实际发生了什么,我希望这里有人可以解释这种行为。

首先我创建File => NewProject =>空WebApi项目。

然后我添加一个简单的控制器并在IIS上托管它。

[RoutePrefix("api")] public class AccountController : ApiController { [HttpPost, Route("account")] public async Task<IHttpActionResult> Post(dynamic command) { dynamic asd = command; return Ok(); } }

然后我用这样的fiddler点击API:

POST https://local.com/api/account HTTP/1.1
Content-Type: application/json

{"username":"user1","password":"secret","email":"email@domain.com"}

然后我在控制器内放置一个断点并使用立即窗口

command.email 'object' does not contain a definition for 'email' and no extension method 'email' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)

但使用asd实际上有效。那个怎么样?有什么想法吗?

asd.email {email@domain.com} base: {email@domain.com} HasValues: false Type: String Value: "email@domain.com"

更多。如果我将动态更改为ExpandoObject,我会通过asd获得我实际期望的结果:

asd.email "email@domain.com"

0 个答案:

没有答案