C# 提琴柱+;webapi 2发行

C# 提琴柱+;webapi 2发行,c#,asp.net-web-api,asp.net-web-api2,C#,Asp.net Web Api,Asp.net Web Api2,这是我的webapi 2端点-MVC复制建议与此无关 [Route("Test2")] [HttpPost] public IHttpActionResult Test2([FromBody] Guid? guid) { return Ok(); } 当我使用fiddler手动测试时,使用: Content-Type: application/json 在收割台和车身中的该有效负载中: {"guid":"1c3c8edc-d87a-46dc-adbf-e7112bf16d22"}

这是我的webapi 2端点-MVC复制建议与此无关

[Route("Test2")]
[HttpPost]
public IHttpActionResult Test2([FromBody] Guid? guid)
{
    return Ok();
}
当我使用fiddler手动测试时,使用:

Content-Type: application/json
在收割台和车身中的该有效负载中:

{"guid":"1c3c8edc-d87a-46dc-adbf-e7112bf16d22"}

方法被命中,但guid为空。有什么想法吗?

它不能直接反序列化到
Guid
。现在,您正在从fiddler发送对象,类似于:

public class SampleObject
{
     public Guid guid {get; set;}
}
尝试只发送:

"1c3c8edc-d87a-46dc-adbf-e7112bf16d22"

在请求的正文中。

您通过标题发送响应。这就是为什么你得到空值。你必须通过身体发送请求

public class Test
{
 public Guid guid {get; set;}
}
你必须像身体一样发送请求

"1c3c8edc-d87a-46dc-adbf-e7112bf16d22"
若你们想通过报头发送请求,你们的代码如下

[Route("Test2")]
[HttpPost]
public IHttpActionResult Test2()
{
   IEnumerable<string> headerValues=request.Headers.GetValues("MyCustomID");
   var guid = headerValues.FirstOrDefault();
   return Ok();
}
[路由(“测试2”)]
[HttpPost]
公共IHttpActionResult测试2()
{
IEnumerable headerValues=request.Headers.GetValues(“MyCustomID”);
var guid=headerValues.FirstOrDefault();
返回Ok();
}

@JoelRamosMichaliszen MVC和WebApi具有完全不同的生命周期。你的建议不适合这里@JoelRamosMichaliszen-请删除重复的建议-这是webapi 2而不是mvc问题!我对标志的看法不好,但我认为MVC和WebAPI的思维方式并没有太大的不同,如果你知道MVC的生命周期的话;你很快就会找到一个可能的解决办法。就像模型绑定器一样。是的,我接受了这一点,并尝试实现一个专用的模型绑定器——尽管我很惊讶webapi没有开箱即用地处理这个问题。我仍然认为你的重复建议是无关紧要的。当然,它不像MVC那样工作,但很相似,请看这个链接,你为什么认为我通过标题发送此内容-请阅读问题-我明确地说我将有效负载放入了主体中!我想这可能对你有帮助。这就是为什么我告诉你两种方法。但它走错了路。抱歉打扰您:)