【问题标题】:Suppression of WebException抑制 WebException
【发布时间】:2021-01-23 00:41:10
【问题描述】:

C#WebClient中http状态码为500时有没有办法抑制WebException的发生? WebException 由 StackTrace 创建,这会降低系统速度。如果 WebExceptions 频繁发生,这尤其严重。

【问题讨论】:

  • 所以你的问题不是如何抑制WebException,它实际上是在询问是否有办法在抛出异常之前获取响应状态码,对吧?
  • 抛出异常对性能的影响只有在附加调试器的情况下才会真正明显。

标签: c# http web webclient system.net.webexception


【解决方案1】:

http 客户端有很多,WebClient 就是其中之一。 WebClient 设计是为了抛出异常。没有办法让它抛出异常,就像人们想要的那样。

它的前身,HttpWebRequest/HttpWebResponsealso does this

如果您不想捕获异常,则需要使用另一个客户端。

HttpClientdoesn't throw exceptions based on the returned status code,所以这是一个选项。

您可以使用Flurl 作为替代uses HttpClient under the hood。添加error handling方法.AllowHttpStatus("500")

【讨论】:

  • 有没有办法查看 HttpClient 或 Flurl 是否在模块内使用 HttpWebRequest 并在模块内捕获异常,以便用户看不到异常?如果内部捕获异常,则无法解决http状态码500频繁出现时系统变慢的问题。
  • HttpClient 和 Flurl 不使用 HttpWebRequest,它们使用自己的东西。它们仅在连接失败时抛出异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
相关资源
最近更新 更多