C# 重写C中HttpResponseMessage的Content-Length属性# 我将一个基于C++的遗留HTTP服务器移植到C。服务器容纳一些希望内容长度(实际内容长度)-1的旧客户端。我们不得不做出让步,因为有缺陷的客户端已经被烧坏在固件中:P

C# 重写C中HttpResponseMessage的Content-Length属性# 我将一个基于C++的遗留HTTP服务器移植到C。服务器容纳一些希望内容长度(实际内容长度)-1的旧客户端。我们不得不做出让步,因为有缺陷的客户端已经被烧坏在固件中:P,c#,asp.net-web-api,http-headers,httpresponse,C#,Asp.net Web Api,Http Headers,Httpresponse,无论如何,C#不允许我重写HttpResponseMessage的Content length属性,并抛出协议冲突异常 是否有任何父类可用于进行此修改?关于如何解决此问题,有何想法 您可以基于实现HTTP服务器。我们可以找到一个例子。我研究了所有选项,似乎没有直接的方法可以从ASP.NET HTTP处理程序中故意违反HTTP。设置response.Content.Headers.ContentLength=something时会发生什么?这就是导致协议冲突异常的原因吗?我假设异常发生在“稍后”阶

无论如何,C#不允许我重写HttpResponseMessageContent length属性,并抛出协议冲突异常


是否有任何父类可用于进行此修改?关于如何解决此问题,有何想法

您可以基于实现HTTP服务器。我们可以找到一个例子。我研究了所有选项,似乎没有直接的方法可以从ASP.NET HTTP处理程序中故意违反HTTP。

设置
response.Content.Headers.ContentLength=something
时会发生什么?这就是导致协议冲突异常的原因吗?我假设异常发生在“稍后”阶段,当另一个组件尝试发送此类响应时。没错。错误发生在我实际写入响应流时。如果我写得更多,我会得到一个溢出异常,如果我写得更少,我会得到一个异常中止,表示没有收到所有字节。不幸的是,我不能使用这种方法,因为我必须在承载在Microsoft Azure上的IIS服务器代码上启用此行为。在这种情况下,我认为这是不可能的。但是,您能提供整个异常,包括整个调用堆栈吗?顺便说一句,Azure vm不是您的选择?另外,当您谈论固件时,您有http客户端源代码吗?根据代码的编写方式,可能会有一些“技巧”。