我在尝试Post
流式传输到Web API方法时遇到错误,我之所以理解,如果正在同时写入正在流式传输的文件,则可能会抛出它。
当没有同时写入文件时,我没有收到此错误。
Bytes to be written to the stream exceed the Content-Length bytes size specified.
我试图通过使用ProtocolViolationException
来抑制它,但我仍然收到此错误。
可能是什么原因以及如何压制它或处理它?</ p>
客户代码
using (var client = new HttpClient())
{
response = await client.PostAsync(endpoint, new StreamContent(fileStream));
}
服务器代码(Asp.Net Web API)
try
{
using (FileStream fs = new FileStream(filePath, FileMode.CreateNew, FileAccess.Write))
{
await Request.Content.CopyToAsync(fs);
}
}
catch (ProtocolViolationException protocolViolationException)
{
//supress error
}
catch (Exception ex)
{
throw ex;
}
注意 - 调试时发现,对于Web API代码,第二个catch块命中,错误消息为The client disconnected.
答案 0 :(得分:0)
我得到了解决方案。我需要将ProtocolViolationException
catch移到客户端而不是服务器端。
try
{
using (var client = new HttpClient())
{
response = await client.PostAsync(endpoint, new StreamContent(fileStream));
}
}
catch (ProtocolViolationException protocolViolationException)
{
//supress error
}