HttpClient 不报告从 Web API 返回的异常

2024-04-30

我在用着HttpClient调用我的 MVC 4 Web api。在我的 Web API 调用中,它返回一个域对象。如果出现任何问题,HttpResponseException将被抛出到服务器,并带有自定义消息。

 [System.Web.Http.HttpGet]
  public Person Person(string loginName)
    {
        Person person = _profileRepository.GetPersonByEmail(loginName);
        if (person == null)
            throw new HttpResponseException(
      Request.CreateResponse(HttpStatusCode.NotFound, 
                "Person not found by this id: " + id.ToString()));

        return person;
    }

我可以使用 IE F12 在响应正文中看到自定义的错误消息。但是当我使用它来调用它时HttpClient,我没有收到自定义的错误消息,只有 http 代码。 404 代码的“ReasonPhrase”始终为“未找到”,500 代码的“ReasonPhrase”始终为“内部服务器错误”。

有任何想法吗?如何从 Web API 发回自定义错误消息,同时将正常返回类型保留为我的域对象?


(将我的答案放在这里是为了更好地格式化)

是的,我看到了,但 HttpResponseMessage 没有 body 属性。我自己弄清楚了:response.Content.ReadAsStringAsync().Result;。示例代码:

public T GetService<T>( string requestUri)
{
    HttpResponseMessage response =  _client.GetAsync(requestUri).Result;
    if( response.IsSuccessStatusCode)
    {
        return response.Content.ReadAsAsync<T>().Result;
    }
    else
    {
        string msg = response.Content.ReadAsStringAsync().Result;
            throw new Exception(msg);
    }
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HttpClient 不报告从 Web API 返回的异常 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 为什么Java中的实例变量总是私有的?

    我是 Java 新手 正在学习封装 并看到了一个实例变量在类中声明为私有的示例 http www tutorialspoint com java java encapsulation htm http www tutorialspoint
  • 推送到 Git (GitLab) 时出现错误 401

    我收到错误 Total 4 delta 2 reused 0 delta 0 error RPC failed result 22 HTTP code 401 当推送到 GitLab 上的 git 存储库时 它曾经有效 我遇到了同样的问题
  • 获取facebook更改后的facebook用户个人资料图片(10月24日)

    所以facebook改变了网站获取用户个人资料图片的方式 所有细节都在这里 https developers facebook com docs graph api reference user picture https develope
  • Gearman 工作状态问题

    我有一台 Gearman 服务器正在运行一个需要几分钟才能完成的进程 我正在运行一个进度条来显示完成情况 并尝试使用 Gearman PHP 扩展和 jobStatus 函数获取进度条的百分比 该作业肯定处于活动状态并已找到 因为前两个字段
  • 如何获取 docker run -i 的输出

    docker run通常返回其运行的命令的输出 我需要将一些数据传递给 docker 运行处理数据的命令 然后返回输出 当我使用 i选项 不返回任何输出 考虑这个简单的例子 echo hello docker run i base wc 它
  • 即使通过Javascript代码检查,如何触发复选框点击事件?

    我的页面中有很多复选框 并且有一个全选复选框可以检查所有复选框 不知何故 我想模拟复选框的单击事件 即使它是通过全选按钮选中 取消选中的 我该怎么做 您可以使用 jQuery trigger 方法 看http api jquery com
  • 下拉列表文本在 IE8 中不可见

    由于某种原因 我的 DDL 选项在 IE8 中都是不可见的 它们显然在那里 因为列表有 127 个选项 但文本是不可见的 在 Firefox 中一切都显示良好 我什至尝试在选择上放置内联样式 并将颜色设置为黑色 重要 当我使用 Firebu
  • 如何修复 git 中的“警告:忽略名称损坏的引用”?

    我正在 OSX 上工作 在特定的存储库中 每当我在输入 git 命令后按 Tab 键自动完成 git diff clicks tab 我现在看到大量警告 warning ignoring ref with broken name refs
  • Python,Tkinter:如何使用线程防止 tkinter gui 主循环崩溃

    嗨 我有一个小的 python gui 界面 有两个按钮 开始 启动计数器 和停止 假设停止计数器 计数器是一个无限循环 因为我不希望它结束 除非第二个按钮是点击 问题是当第一个按钮的功能仍在运行时无法单击第二个按钮 我读到我需要使用线程并
  • 有没有办法设置 iOS Safari 过度滚动/弹性滚动区域的样式?

    在 iOS Safari 中 当您滚动到网页底部时 您可以通过尝试再次滚动来将页面 抬起 我认为这是为了向用户保证他们已经到达页面末尾 默认情况下 该区域是空的 白色的 有没有办法用 CSS 来设置这个区域的样式 我想添加背景图片 只是为了
  • 防止系统字体缩放 - Jetpack Compose

    我正在尝试限制应用程序免受系统字体缩放的影响 我已经尝试了很多解决方案 但没有一个有帮助 他们中的大多数人都告诉我们使用 dp 而不是 sp 来确定文本大小 但在撰写中 如果我是正确的 我们只能使用 sp 因为它需要一个文本单元 有没有正确
  • Airbrake 抛出错误“pybrake - 错误 - strconv.ParseInt:解析“None”:无效语法”

    我正在尝试按照中描述的步骤在 Django 项目中使用 Airbrake 记录器https github com airbrake pybrake django integration https github com airbrake p
  • 如何配置 Webpack 5 包以使用全局 jQuery?

    我有一个正在加载 jQuery 的网页 其中有一个指向 CDN 的脚本标记 我正在将 jQuery 加载到全局范围内 并且在整个站点中都有少量 JS 使用它 这一切都工作正常 我想继续以这种方式加载 jQuery 除此之外 我使用 Webp
  • Nest.js Google Login(passport.js) 与 SPA 前端(React)

    在我的全栈项目 Nest js React 中 我使用护照谷歌实现了谷歌登录 如下所示 import Controller Get Req UseGuards from nestjs common import AppService fro
  • 无法使用 Hilt 注入 workmanager 构造函数

    我正在开发一个 Android 应用程序 我尝试将 hilt 与 workmanager 构造函数一起使用 但它不起作用并给出了此错误 2020 08 18 19 01 09 989 18125 18759 com E WM WorkerF
  • 共享首选项更新值未反映在服务中

    我的应用程序在应用程序启动时调用服务 在应用程序中 我正在更新给定键值对的值 SharedPreferences Editor editor getSharedPreferences getString R string shared pr
  • 如何使用 xpcom 更改 Firefox 代理设置

    我有一个在本地主机 127 0 0 1 上运行的代理服务器 并且我有累了必须培训用户如何在 Firefox 中切换代理以绕过被阻止的网站 我决定写一个插件 我想知道如何使用xpcom告诉 Firefox 使用某个代理 例如对于 http 请
  • 在 OpenCV 中对 RGB 图像进行阈值处理

    我有一个彩色图像 我想在 OpenCV 中设置阈值 我想要的是 如果任何 RGB 通道低于某个值 则将所有通道中的值设置为零 即黑色 因此 我使用 opencv 阈值函数 cv Mat frame thresholded read fram
  • iphone - 可以在 Grand Central Dispatch 的辅助线程上使用 usleep 吗?

    我正在使用 Grand Central Dispatch 将一个块添加到队列 不是主队列 该块有一个循环 并且在循环的每次通过之间需要 0 02 秒的小延迟 我在用 dispatch async myOwnQueue begin loop
  • HttpClient 不报告从 Web API 返回的异常

    我在用着HttpClient调用我的 MVC 4 Web api 在我的 Web API 调用中 它返回一个域对象 如果出现任何问题 HttpResponseException将被抛出到服务器 并带有自定义消息 System Web Htt