Asp.net 在ASPNET WebApi和json请求中使用动态参数时的奇怪行为

Asp.net 在ASPNET WebApi和json请求中使用动态参数时的奇怪行为,asp.net,asp.net-web-api,Asp.net,Asp.net Web Api,我真的没有很好的解释到底发生了什么,我希望这里有人能解释这种行为 首先,我创建File=>NewProject=>emptyWebAPI项目 然后我添加了一个简单的控制器,并将其托管在IIS上 [RoutePrefix(“api”)] 公共类AccountController:ApicController { [HttpPost,路线(“账户”)] 公共异步任务发布(动态命令) { 动态asd=命令; 返回Ok(); } } 然后我用fiddler点击API,如下所示: POST https:/

我真的没有很好的解释到底发生了什么,我希望这里有人能解释这种行为

首先,我创建File=>NewProject=>emptyWebAPI项目

然后我添加了一个简单的控制器,并将其托管在IIS上

[RoutePrefix(“api”)]
公共类AccountController:ApicController
{
[HttpPost,路线(“账户”)]
公共异步任务发布(动态命令)
{
动态asd=命令;
返回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
“对象”不包含“电子邮件”的定义,并且找不到接受“对象”类型的第一个参数的扩展方法“电子邮件”(是否缺少using指令或程序集引用?

但是使用
asd
实际上是可行的。怎么样?有什么想法吗

asd.email
{email@domain.com}
基数:{email@domain.com}
HasValues:false
类型:字符串
值:“email@domain.com“

甚至更多。如果我将dynamic更改为ExpandoObject,我会得到下面的结果,这是我实际期望的结果,但是通过
asd

asd.email
"email@domain.com“