gpt4 book ai didi

asp.net - 使用传输编码 : chunked fails in IIS 8. 5 Web API 进行 POST

转载 作者:行者123 更新时间:2023-12-02 12:17:27 25 4
gpt4 key购买 nike

我在 IIS 8.5 上运行 ASP.NET Web API,并且我的 POST 方法接受 json 文档正文。现在,客户端应用程序正在使用 apache httpclient,它显然会自动将 Transfer-Encoding: chunked header 添加到请求中。我的 API 方法由于主体不存在而引发异常 - 它无法反序列化主体中的 json,即使它在客户端日志中看起来不错。

我应该如何处理请求以确保我获得完整的 body ?我想 IIS 也应该支持请求的传输编码,因为它是 HTTP/1.1 规范的一部分,对吗?

有一个类似的问题未得到解答:Reading Body on chunked transfer encoded http requests in ASP.NET

最佳答案

您必须检查 ContentLength header ,如果为 0,则将其设置为 null。

public class ChunkJsonMediaTypeFormatter : JsonMediaTypeFormatter
{
public override Task<object> ReadFromStreamAsync(Type type, Stream readStream, HttpContent content, IFormatterLogger formatterLogger)
{
content.Headers.ContentLength = (content.Headers.ContentLength == 0) ? null : content.Headers.ContentLength;

return base.ReadFromStreamAsync(type, readStream, content, formatterLogger);
}
}

连接此格式化程序

GlobalConfiguration.Configure(config =>
{
var jsonFormatter = new ChunkJsonMediaTypeFormatter() { SerializerSettings = config.Formatters.JsonFormatter.SerializerSettings };
config.Formatters.Remove(config.Formatters.JsonFormatter);
config.Formatters.Insert(0, jsonFormatter);
}

https://gist.github.com/jayoungers/0b39b66c49bf974ba73d83943c4b218b

关于asp.net - 使用传输编码 : chunked fails in IIS 8. 5 Web API 进行 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47012360/

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