.NET Framework 4.7.2中如何捕获429(请求过多)错误?
捕获429请求过多错误的解决方案
在.NET Framework 4.7.2中,HttpStatusCode枚举确实未包含429(请求过多)的对应属性,你可以通过以下两种方法专门捕获该错误:
方法1:直接比较状态码数值
直接使用429这个数值与响应的状态码做比较,这是最直接可靠的方式:
catch (WebException ex) { if (ex.Response is HttpWebResponse response) { // 直接对比429数值 if ((int)response.StatusCode == 429) { // 执行你的特定操作 } } }
方法2:自定义枚举映射
你可以自己定义包含429的枚举,通过枚举转换来判断:
// 自定义包含429的枚举 public enum CustomHttpStatusCode { TooManyRequests = 429 } catch (WebException ex) { if (ex.Response is HttpWebResponse response) { if (Enum.TryParse<CustomHttpStatusCode>(((int)response.StatusCode).ToString(), out var customCode) && customCode == CustomHttpStatusCode.TooManyRequests) { // 执行你的特定操作 } } }
额外说明:也可以结合response.StatusDescription辅助判断(比如检查是否包含"Too Many Requests"),但状态描述可能因服务器实现不同存在差异,因此优先推荐直接使用数值判断,准确性更高。
内容的提问来源于stack exchange,提问作者Sumanth Devadiga
相关产品推荐
相关产品推荐

