gpt4 book ai didi

asp.net-web-api - .NET WebApi 查看原始请求

转载 作者:行者123 更新时间:2023-12-01 10:00:00 27 4
gpt4 key购买 nike

我有一个

public void Post([FromBody]Record value)

-我可以使用一些 json 从 fiddler 调用的方法。

当使用具有相同 json 的 WizTools RESTClient 3.1 从我的 mac 调用该方法时,value 始终为 null。看起来它没有被解析或什么的。

我在两台机器上都使用了 Content-Type: application/json 并且我已经仔细检查过 Request.Content 对象是 Visual Studio 调试器中的 header .

如果我使用一个只有 2 个属性的简单对象,如下所示:

public class Test123 {
public string name { get; set; }
public int age { get; set; }
}

public void Post([FromBody]Test123 value)

我可以从 fiddler 和 mac 调用它,value 永远不会为 null。

关于如何调试它有什么技巧吗?例如,有什么方法可以让我看到从我的 mac 发送到我 PC 上的 iis/visual studio 的原始响应吗?它不会出现在 fiddler 中。

最佳答案

对于您的操作方法,如果您发送带有 Content-Type: application/json 的请求和 {"name":"john", "age"的请求消息正文: 20},它应该正确绑定(bind)。顺便说一句,您不需要使用 [FromBody],因为 Test123 是一个复杂类型。

无论如何,您可以通过添加这样的消息处理程序来查看原始请求消息。

public class MyHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken token)
{
HttpMessageContent requestContent = new HttpMessageContent(request);
string requestMessage = requestContent.ReadAsStringAsync().Result;

return await base.SendAsync(request, token);
}
}

WebApiConfig.cs Register 方法中添加这样的处理程序 config.MessageHandlers.Add(new MyHandler());。原始请求将在 requestMessage 变量中。您可以在调试或写入跟踪等时中断那里进行检查。

关于asp.net-web-api - .NET WebApi 查看原始请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17613959/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com