C# Kestrel修改传入的http头
我有一个IP摄像头,我正试图从中接收事件。例如,如果它检测到帧中某个特定部分的运动,我想了解它并获取事件捕获的图像 问题是它使用HTTP/1.0 POST发送此信息。根据spec(),主体长度可以通过Content-length头进行通信,也可以在所有内容都发送到服务器时关闭连接。IP摄像头执行两种方法中的后一种 Kestrel的web服务器不支持此功能,如图所示Microsoft.AspNetCore.server.Kestrel.Core.Internal.Http.Http1MessageBody.For()包含以下内容(,第308-318行): 因此,Kestrel每次都抛出一个BadHttpRequestException 关于如何解决这个问题有什么想法吗C# Kestrel修改传入的http头,c#,asp.net-core,kestrel-http-server,C#,Asp.net Core,Kestrel Http Server,我有一个IP摄像头,我正试图从中接收事件。例如,如果它检测到帧中某个特定部分的运动,我想了解它并获取事件捕获的图像 问题是它使用HTTP/1.0 POST发送此信息。根据spec(),主体长度可以通过Content-length头进行通信,也可以在所有内容都发送到服务器时关闭连接。IP摄像头执行两种方法中的后一种 Kestrel的web服务器不支持此功能,如图所示Microsoft.AspNetCore.server.Kestrel.Core.Internal.Http.Http1Message
- 可以运行在Kestrel旁边的TCP服务器
- 添加内容长度的低级钩子
// Avoid slowing down most common case
if (!object.ReferenceEquals(context.Method, HttpMethods.Get))
{
// If we got here, request contains no Content-Length or Transfer-Encoding header.
// Reject with 411 Length Required.
if (context.Method == HttpMethod.Post || context.Method == HttpMethod.Put)
{
var requestRejectionReason = httpVersion == HttpVersion.Http11 ? RequestRejectionReason.LengthRequired : RequestRejectionReason.LengthRequiredHttp10;
BadHttpRequestException.Throw(requestRejectionReason, context.Method);
}
}