我有一个Azure应用程序,可以连接到已安装的大量设备。直到今天一切停止工作为止,一切一直运转良好。我认为发生的事情是Azure现在正在分割较小的消息(有效载荷为87字节),这暴露了我的TCP处理程序中的错误。
有人知道是否有一种强制Azure不分割小的TCP消息的方法吗?
跟进-我认为这是因为HTTP消息被“分块”并作为2个TCP段发送。我的代码中有一个错误,无法处理直到现在才浮出水面的块。
我可以关闭Azure中的分块吗?
答案 0 :(得分:0)
如果您的问题是是否有一种方法可以防止HTTP响应使用HTTP Chunked Transfer Encoding,则可能取决于您使用的服务器端API。设置Content-Length标头通常就足够了。
但是我认为您的问题是,是否可以强制Azure以一种避免客户端中的错误的方式缓冲IP数据包,即假设单个套接字Read()将返回完整的消息。在这种情况下,不会。它甚至可能不在Azure的控制范围之内,因为任何中间路由器都可能导致数据包传递的延迟,从而导致客户端的Read()返回部分消息。
答案 1 :(得分:0)
我在Disable chunking in Asp.Net Core
处找到了解决方案总结:
response.Headers["Content-Encoding"] = "identity";
response.Headers["Transfer-Encoding"] = "identity";
这似乎禁用了不必要的分块。我不知道怎么办