ASP.NET Core Web API处理HttpResponseMessage类型返回值的问题
在将我们的 web api 从 .NET Framework 迁移至 .net core(asp.net core 1.1)之后,遇到一个问题。
之前返回值类型为 HttpResponseMessage 的 web api,比如:
[HttpGet]
public async Task<HttpResponseMessage> Get()
{
return await _httpClient.GetAsync($"...");
}
(注:这个 web api 的用途是直接将 HttpClient 调用后端 web api 的结果返回给调用客户端)
原本会返回 json 格式的业务数据,现在返回的却是对 HttpResponseMessage 自己的 json 序列化数据:
{
"version": {},
"content": {},
"statusCode": 200,
"reasonPhrase": "OK",
"headers": [],
"requestMessage": {
"version": {},
"content": null,
"method": { "method": "GET" },
"requestUri": "",
"headers": [],
"properties": {}
},
"isSuccessStatusCode": true
}
驴头不对马嘴。
后来在 stackoverflow 上找到了解决方法 —— ASP.NET Core HTTPRequestMessage returns strange JSON message ,用回答中的方法成功解决了这个问题。
解决方法如下:
1)在 .csproj 中添加下面的配置,为了可以安装第2步中的 nuget 包(asp.net core 2.0不需要添加这个配置)
<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8</PackageTargetFallback>
2)安装 nuget 包 Microsoft.AspNetCore.Mvc.WebApiCompatShim
3)在 Startup -> ConfigureServices 中,在 AddMvc() 之后添加 AddWebApiConventions() 即可:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddWebApiConventions();
}
ASP.NET Core Web API处理HttpResponseMessage类型返回值的问题的更多相关文章
- ASP.NET Core Web API 控制器与方法返回输出
DATA ACCESS LAYER 在一些不同的示例教程中,我们可能看到 DAL 的实现在主项目中,并且每个控制器中都有实例.我们不建议这么做. 当我们编写 DAL 时,我们应该将其作为一个独立的服务 ...
- 使用 Swagger 自动生成 ASP.NET Core Web API 的文档、在线帮助测试文档(ASP.NET Core Web API 自动生成文档)
对于开发人员来说,构建一个消费应用程序时去了解各种各样的 API 是一个巨大的挑战.在你的 Web API 项目中使用 Swagger 的 .NET Core 封装 Swashbuckle 可以帮助你 ...
- 在Mac下创建ASP.NET Core Web API
在Mac下创建ASP.NET Core Web API 这系列文章是参考了.NET Core文档和源码,可能有人要问,直接看官方的英文文档不就可以了吗,为什么还要写这些文章呢? 原因如下: 官方文档涉 ...
- ASP.NET Core Web API 开发-RESTful API实现
ASP.NET Core Web API 开发-RESTful API实现 REST 介绍: 符合REST设计风格的Web API称为RESTful API. 具象状态传输(英文:Representa ...
- 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持
HAL(Hypertext Application Language,超文本应用语言)是一种RESTful API的数据格式风格,为RESTful API的设计提供了接口规范,同时也降低了客户端与服务 ...
- ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现
很长一段时间以来,我都在思考如何在ASP.NET Core的框架下,实现一套完整的事件驱动型架构.这个问题看上去有点大,其实主要目标是为了实现一个基于ASP.NET Core的微服务,它能够非常简单地 ...
- ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理
在上文中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发.订阅和处理的流程.这种实现太简单了,百十行代码就展示了一个基本工作原理.然而,要将这样的解决方案运用到实际生产环境,还有很 ...
- ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线
在上文中,我们讨论了事件处理器中对象生命周期的问题,在进入新的讨论之前,首先让我们总结一下,我们已经实现了哪些内容.下面的类图描述了我们已经实现的组件及其之间的关系,貌似系统已经变得越来越复杂了. 其 ...
- ASP.NET Core Web APi获取原始请求内容
前言 我们讲过ASP.NET Core Web APi路由绑定,本节我们来讲讲如何获取客户端请求过来的内容. ASP.NET Core Web APi捕获Request.Body内容 [HttpPos ...
随机推荐
- Eureka微服务ID
Instance ID用于唯一标识注册到Eureka Server上的微服务实例.我们可在Eureka Server的首页直观地看到各个微服务的Instance ID.例如,图11-1中的itmuch ...
- 审核流(1)SNF.WorkFlow审核流简介--SNF快速开发平台3.1
本项目是的在Spring.Net.Framework 平台之上进行研发.SNF.WorkFlow审核流是一款完全自主知识产权研发的为软件项目. 审核流基本概念:什么是审核流? 审核流:两个或两个以上的 ...
- Atitit.每周计划日程表 流程表v3
Atitit.每周计划日程表 流程表 每周趋势总结 新特性聚合 最佳实践聚合. 上周总结 本度计划 检查于推进年度计划月度计划里程碑 检查于推进季度计划月度计划里程碑 上周Todo汇总结转.. 待报 ...
- zookeeper的可视化web界面
转载一篇我心中大神有关zookeeper WEB的文章 以前写过一篇zookeeper集群搭建的文章<烂泥:zookeeper集群搭建>,最近在使用activemq集群过程中碰到了一些有 ...
- Android反编译和二次打包
参考:APK反编译 一.工具介绍: 1.解压工具 2.JDK 3.apktool: aapt.exe,apktool.bat,apktool.jar;三个在同一目录结合使用,用来反编译apk,反编译生 ...
- JVM 内部原理(一)— 概述
JVM 内部原理(一)- 概述 介绍 版本:Java SE 7 图中显示组件将会从两个方面分别解释.第一部分涵盖线程独有的组件,第二部分涵盖独立于线程的组件(即线程共享组件). 目录 线程独享(Thr ...
- Win10共享打印机所需要的设置(无需密码访问实现打印机共享,共享不要密码)
原文:https://m.baidu.com/from=1086k/bd_page_type=1/ssid=0/uid=0/pu=usm@0,sz@1320_1002,ta@iphone_2_5.1_ ...
- 查看pip安装的Python库
查看安装的库 pip list或者pip freeze 查看过时的库 pip list --outdated 批量更新的Python脚本 import pip from subprocess impo ...
- file类型input框设置上传相同文件,并都可以触发change事件。
在使用file类型input框是,删除了第一次上传到文件,再次上传相同文件,无法触发change事件,所以在删除的js上添加如下js代码: document.getElementById('fileU ...
- 两种简单实现菜单高亮显示的JS类(转载)
两种简单实现菜单高亮显示的JS类 近期在写一个博客管理后台的前端,涉及在同一页面两种高亮显示当前菜单的需求.记得当年写静态页时,为了实现高亮都是在每个页面加不同的样式,呵.高亮显示我觉得对于web ...