如何抑制或处理文件发布后的Web API错误

时间:2018-02-11 14:59:38

标签: c# asp.net-web-api

我在尝试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.

1 个答案:

答案 0 :(得分:0)

我得到了解决方案。我需要将ProtocolViolationException catch移到客户端而不是服务器端。

try
  {
    using (var client = new HttpClient())
        {
            response = await client.PostAsync(endpoint, new StreamContent(fileStream));
        }
 }
 catch (ProtocolViolationException protocolViolationException)
        {
            //supress error
        }