c# - AllowHttpStatus 仍然抛出 Flurl.Http.FlurlHttpException
问题描述
我正在使用AllowHttpStatus
禁用 HTTP 错误引发的异常并自己处理异常。不幸的是,我仍然得到一个例外。
Flurl.Http.FlurlHttpException。调用失败,状态码为 500(内部服务器错误):POST http://MyUrl 请求
编码
var request = new Url("http://MyUrl").AllowHttpStatus();
var content = new FileContent(Conversion.SourceFile.FileInfo.ToString());
var task = request.PostAsync(content, model.CancellationToken);
using (var httpStream = await task.ReceiveStream())
using (var fileStream = new FileStream(DestinationLocation + @"\result." + model.DestinationFileFormat, FileMode.CreateNew))
{
await httpStream.CopyToAsync(fileStream);
}
//This line is never reached if HTTP Exception is thrown by PostAsync
if (task.Result.StatusCode != HttpStatusCode.OK)
{
if (task.Result.StatusCode != HttpStatusCode.InternalServerError)
{
Logger.Main.LogCritical($"Exception {task.Result.ReasonPhrase}");
}
throw new ApiException(ResponseMessageType.ConversionFailed);
}
为什么AllowHttpStatus
没有按预期工作?
解决方案
AllowHttpStatus
接受参数。没有它们,它没有任何效果。因此,在这种情况下,您需要传递它HttpStatusCode.InternalServerError
,例如:
var request = new Url("http://MyUrl").AllowHttpStatus(HttpStatusCode.InternalServerError);
或者使用AllowAnyHttpStatus
:
var request = new Url("http://MyUrl").AllowAnyHttpStatus();
推荐阅读
- flutter - 如何从 firestore 获取一些数据并对其进行汇总?
- r - R Plumber 在不同操作系统上的性能
- c# - 如果抛出 InvalidOperationException,如何从 SingleOrDefaultValue 获取值
- php - 如果它们位于同一父位置,如何在另一个项目中调用一个项目的程序类
- sql - SQL 透视/反透视
- html - HTML 元素设置为可见但仍然不可见
- vue.js - 通过插槽传递给组件,该组件发出事件
- lua - 我在使用 LUA 如何转换成整数的最后一个年龄上得到小数位
- c - 如何将 unsigned int 转换为指针并取消引用它?
- mysql - 如何将产品同步到本地应用程序的本地 sql 数据库