首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当webapi返回406时,ASP.NET核心HttpClient请求返回200

当Web API返回406时,表示请求的资源无法满足客户端请求的条件。HTTP状态码406表示“不可接受”,通常是由于客户端请求的内容类型不被服务器支持或可接受的内容类型列表为空导致的。

在ASP.NET Core中,使用HttpClient发送请求时,如果服务器返回406状态码,说明服务器无法提供请求的内容类型。这可能是因为服务器只支持特定的内容类型,而客户端请求的内容类型不在服务器支持的列表中。

解决这个问题的方法是在HttpClient请求中设置Accept头部,指定服务器支持的内容类型。可以使用以下代码示例:

代码语言:txt
复制
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;

public class Program
{
    public static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = await client.GetAsync("https://api.example.com/resource");
            if (response.IsSuccessStatusCode)
            {
                // 处理成功响应
                string responseBody = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseBody);
            }
            else
            {
                // 处理错误响应
                Console.WriteLine($"请求失败:{response.StatusCode}");
            }
        }
    }
}

在上述代码中,我们通过设置Accept头部为"application/json",告诉服务器我们只接受JSON格式的响应。如果服务器支持该内容类型,它将返回200状态码,并返回请求的资源。否则,服务器将返回406状态码。

对于ASP.NET Core中的Web API,如果希望支持多种内容类型,可以在控制器的方法上使用[Produces]属性来指定支持的内容类型。例如:

代码语言:txt
复制
[ApiController]
[Route("api/[controller]")]
public class MyController : ControllerBase
{
    [HttpGet]
    [Produces("application/json", "application/xml")]
    public IActionResult Get()
    {
        // 返回资源
    }
}

在上述代码中,Get方法使用[Produces]属性指定支持的内容类型为"application/json"和"application/xml"。如果客户端请求的内容类型不在这个列表中,服务器将返回406状态码。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,我无法提供具体的链接。但是,腾讯云作为一家知名的云计算服务提供商,提供了丰富的云计算产品和解决方案,可以在腾讯云官方网站上查找相关信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Asp.Net WebApi核心对象解析(二)

在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑...扯淡完毕,接着聊正事,上一篇写的是Asp.Net WebApi核心对象解析(上篇),本文是下篇,不管写的怎么样,还望大家多多指正。...一.WebApi处理架构:     我们在学习Asp.Net WebApi时,应该对Asp.Net WebApi的内部运行机制有一个大致的了解,很多人说了解这些基本原理的意义不大,实际开发中应用不到而且还浪费时间...四.WebApi核心对象HttpClient:    上面介绍完服务器端的接收和响应HTTP请求的操作方法,接下来介绍一个客户端生成HTTP请求,用与请求和获取服务器返回的消息,在新版本的.NET中,提供类...五.总结:    本文分为上下两篇,简单的介绍类一下Asp.Net WebApi的一些核心对象,并简单介绍了Asp.Net WebApi路由机制,处理架构,托管方式等等,如有不足和错误之处还望多多指正。

3.1K100

WebApi client 的面向切面编程

.Net的面向切面编程 .Net的服务端应用AOP很常见,在Asp.net MVC与Asp.net WebApi等新框架里到处都有AOP的影子,我们可以把一个服务方法“切”为很多面,日志面、验证面、请求方式处理...在流行SOAP的年代,很少需要一个强悍的Client,而今天restful时代,.net也出了一个HttpClient,可以说是与Asp.net WebApi相配吧,虽然HttpClient相对WebClient...HttpClient请求一个接口要做的基本事情,同时把这些事情“切”为多个面,Http请求大致如下: ?...我们可以根据这个拦截功能,收集每个面的配置,组装为http请求消息,然后调用HttpClient为完成发送请求,再让第5个面来进行回复结果处理。...WebApiClient设计 现在,我们的目标是,让调用WebApi与编写WebApi一样,声明接口、参数、返回值,打上请求方法与路径(面)特性、返回结果处理(面)特性、请求内容(面)特性。

850110
  • 快速入门系列--WebAPI--03框架你值得拥有

    接下来进入的是俺在ASP.NET学习中最重要的WebAPI部分,在现在流行的互联网场景下,WebAPI可以和HTML5、单页应用程序SPA等技术和理念很好的结合在一起。...所谓ASP.NET WebAPI,其核心概念就是构建REST风格的Web服务,把一起数据视为资源,无论是服务请求或者是数据操作,与以前的SOAP和XML-RPC架构风格有很大不同。...WebAPI的服务器管道,这一块和之前学习的ASP.NET MVC管道很相似,但也有一些差异,不过个人感觉这个管道更加的像J2EE的管道了。...,针对请求的处理实现在SendAsync中,针对响应的处理通过返回类型Task完成 HttpRequestMessage Content属性封装Http主体信息...HttpClient类继承之抽象类HttpMessageInvoker,核心方法SendAsync包括HttpRequestMessage的参数和HttpResponseMessage的返回类型,和之前服务器端的

    2.1K90

    Asp.Net WebAPI核心对象解析(三)

    不过可惜了,今天我们讲解的主题不是这几种技术,今天主要讲解的是ASP.NET WebAPI。    ...对于ASP.NET WebAPI的优势和特点,在这里就不讲了,需要用到的自然就会选择,也不需要我浪费篇幅去讲解这些,这篇博文主要讲解ASP.NET WebAPI中的HTTP消息的结构和处理消息的核心对象...对于ASP.NET的HTTP处理方式的了解,是我在开发微信公众平台时进一步学习的,微信公众平台提供了对外访问的接口,我们的程序和服务器对微信服务器的接口进行请求访问,微信服务器获取HTTP请求后,返回处理结果...二.WebAPI的HTTP消息解析:       HTTP协议的工作方式是在客户端和服务器之间交换请求和响应消息,那么这也就可以说明HTTP的核心就是消息,对于“消息”的了解,我们只要知道消息分为“消息头部...HTTP 方法 RequestUri 获取或设置 HTTP 请求的 Uri Headers 获取 HTTP 请求标头的集合 Properties 获取 HTTP 请求的属性集 ToString 返回表示当前对象的字符串

    2.9K90

    在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用

    WebHost:这是一个空的ASP.NET Web应用,它实现了针对ASP.NET Web API的Web Host寄宿,该项目具有针对WebApi的项目引用。...Action方法Get具有一个表示联系人ID的可缺省参数,如果该参数存在则返回对应的联系人,否则返回整个联系人列表。...三、以Web Host方式寄宿Web API 我们在上面已经提到过了,虽然被命名为ASP.NET Web API,但是其核心的消息处理管道却是独立于ASP.NET平台的,所以我们可以对相同的Web API...由于Web API的调用本质上就是一次普通的发送请求/接收响应的过程,所以HttpClient其实可以作为一般意义上发送HTTP请求的工具。...值得一提的是,绑定的方法被执行时,KO会将当前绑定上下文作为参数。

    4.6K110

    快速入门系列--WebAPI--01基础

    ASP.NET MVC和WebAPI已经是.NET Web部分的主流,刚开始时两个公用同一个管道,之后为了更加的轻量化(WebAPI是对WCF Restful的轻量化),WebAPI使用了新的管道,因此两者相关类的命名空间有细微差异...WebAPIASP.NET路由的异同 ASP.NET MVC的路由:Routes(RouteCollection)的线程安全,读写锁,GetReadLock, GetWriteLock。...消息处理管道 还记的ASP.NET MVC中的核心是HttpHandler,而在WebAPI中其管道处理器是HttpMessageHandler。...出于安全考虑,access token有一个过期时限,此外授权服务器还会返回一个长期有效的安全令牌,ac token过期时,可以利用它再获取,使用它需要在scope中加入"wl.offline_access...同源策略主要针对Ajax请求,该策略主要限制了通过XMLHttpRequest发送的Ajax请求,如果是一个异源地址,浏览器将拒绝读取返回的内容。

    2.3K70

    【One by One系列】IdentityServer4(二)使用Client Credentials保护API资源

    可以很容易集成至ASP.NET Core,颁发token。 使用Id4基本步骤如下: **1....用于签名的凭据(credentials) 用户可能会请求访问的Identity资源和API资源 会请求获取token的客户端 用户信息的存储机制,如ASP.NET Core Identity或者其他机制...c.Type, c.Value }); } } 3.4 引入nuget包 Microsoft.AspNetCore.Authentication.JwtBearer 这个包是收到请求时...\webapi\ dotnet run 用vs启动client 获取access-token,我们通过http://jwt.calebb.net/解析 这也是api返回的Claims “身份认证的中间对...不传入token,那么webapi就没收到token,所以返回Unauthorized未授权 类比场景:进入小区,没有门禁,肯定不让你进 5.4 修改API对scope的验证要求 被保护的资源webapi

    2.3K30

    DDD实战进阶第一波(七):开发一般业务的大健康行业直销系统(实现产品上下文接口与测试)

    Core WebApi,通过WebApi将上架产品的功能暴露出去。...return result; } } 1.首先大家看到接口层是非常薄的一层,它并不包含业务逻辑和数据访问,它只是初始化一些对象,然后完成应用服务的调用,返回前端所需要的格式的对象...2.产品数据访问上下文、仓储接口、产品上下文仓储接口等需要通过依赖注入框架来获取特定的实现类,依赖注入框架可以采用Asp.net Core自带的,也可以采用Unity等框架。...后端接口完成后,作为后端开发人员,我们需要写单元测试来完成对后端接口的调用,并尝试得到期望的结果。我们在这里采用MSTest,你也可以使用XUnit。...addproductspudto.SKUPvs = new List(); addproductspudto.SKUPvs.Add(200

    52840

    DDD实战进阶第一波(七):开发一般业务的大健康行业直销系统(实现产品上下文接口与测试)

    Core WebApi,通过WebApi将上架产品的功能暴露出去。...return result; } } 1.首先大家看到接口层是非常薄的一层,它并不包含业务逻辑和数据访问,它只是初始化一些对象,然后完成应用服务的调用,返回前端所需要的格式的对象...2.产品数据访问上下文、仓储接口、产品上下文仓储接口等需要通过依赖注入框架来获取特定的实现类,依赖注入框架可以采用Asp.net Core自带的,也可以采用Unity等框架。...后端接口完成后,作为后端开发人员,我们需要写单元测试来完成对后端接口的调用,并尝试得到期望的结果。我们在这里采用MSTest,你也可以使用XUnit。...addproductspudto.SKUPvs = new List(); addproductspudto.SKUPvs.Add(200

    73350

    使用微服务架构思想,设计部署OAuth2.0授权认证框架

    最后,对请求返回的响应结果做复杂的异常处理,得到正确的返回值或者异常结果。...下面我们以某个比较老的管理系统来举例,它基于 ASP.NET MVC3定制开发,扩展了一些底层的东西,所以没法升级到兼容支持ASP.NET WebAPI MVC5。...,直接返回本地请求的响应结果: if (!...对象的优化  HttpClient对象封装了很多HTTP请求有用的方法,特别是哪些异步方法,感觉它跟ASP.NET MVC WebAPI就是标配。...前面我们说明实现代理访问使用了HttpClient对象,默认情况下同一个HttpClient对象与服务器交互是可以保持会话状态的,在代理请求的时候,将原始请求的Cookie值附加到代理请求的HttpCliet

    11K32

    .NET Core 学习资料精选:入门

    Core 中控制器操作的多路径返回类型(IActionResult) .NET Core 3.0 新的 System.Text.Json API 配置 ASP.NET Core 中的配置(json、xml...(配置到类自动映射) 路由、模型绑定 ASP.NET Core WebAPI中,Controller标注 [ApiController] 特性,其路由只能使用[route]特性方式 ASP.NET Core...Core WebAPI 创建ASP.NET Core Web API (ControllerBase、参数绑定源) ASP.Net Core WebAPI 几种版本控制对比 使用 Web API 约定...]ASP.NET Core CookieManager 通信 对比 gRPC 服务和 HTTP API 服务 #、HttpClient ASP.NET Core HttpClient的演进和避坑 ASP.NET...Core HttpClient的各种用法、生命周期管理 DotNetCore 使用Http请求及基于 Polly 的处理故障 DotNetCore 中 HttpClientFactory 类源码分析

    3.8K20

    gRPC本质的探究与实践

    二、验证请求模型 就是个常规的 ASP.NET Core 使用 grpc 的步骤 创建服务端 建立一个 ASP.NET Core grpc 项目 添加一个测试的 reverse.proto 用于测试...中,我们可以尝试获取流中的数据,进一步分析具体细节; dump请求&响应数据 借助 ASP.NET Core 的中间件,我们可以比较容易的进行 请求流 & 响应流 的内容 dump; 请求流 是只读的...服务端获取请求流和响应流比较简单,目前 HttpClient 没有直接获取请求流的办法,我们需要从 HttpContent 的 SerializeToStreamAsync 方法中获取到真正的请求流。...{service名}/{方法名}`; - 请求&响应的 `ContentType` 都为 `application/grpc`; 直接上代码,使用 HttpClient 发起请求,并获取 请求流 &...访问常规 WebAPI 也能享受到其带来的好处; Grpc 的 Unary 请求模式和和 WebAPI 逻辑是一样的;Server streaming、Client streaming 请求模式都可以通过

    99810

    .NET周刊【11月第2期 2023-11-12】

    后端技术包括Asp.net Core MVC、WebApi、Redis等,前端则使用Uni-App和uView UI。商城系统强调可视化布局和跨平台兼容性,适合快速构建多功能电商平台。....net 温故知新【13】:Asp.Net Core WebAPI 使用依赖注入DI https://www.cnblogs.com/SunSpring/p/17816564.html 本文讲述了在WebAPI...作者用WebAPIHttpClient代码示例,并用wireshark监控流量,发现代理服务器故障导致的通讯问题。...Asp.Net Core webapi+net6 使用资源筛选器(过滤器) 做缓存 https://www.cnblogs.com/cyfj/p/17815126.html 本文介绍了如何在ASP.NET...然后创建ResourceFilter过滤器,利用IMemoryCache接口存取缓存,以请求IP和方法名作为缓存键。在ResourceFilter中,若缓存存在则直接返回结果,否则执行方法并缓存结果。

    24810

    使用 System.Net.Http.Json 高效处理Json数据

    在此之前我们是如何处理 JSON是一种普遍和流行的串行化格式数据来发送现代web api,我经常在我的项目中使用HttpClient 调用外部资源, content type 是 “application...如果您在过去在项目中使用过 HttpClient 来处理返回的Json数据,那么您可能已经使用了Microsoft.AspNet.WebApi.Client。...HttpCompletionOption 用来提升效率,我最近的文章有这个的介绍,这个库已经处理好了 HttpResponseMessage,使用这个Option是必需的 转码 最后这个库的实现细节, 包括支持代码转换返回的数据...System.Net.Http.Json 库中的类型,内部它会使用 System.Text.Json 来进行序列化 总结 在这篇文章中,我们回顾了一些传统的方法,可以用来从HttpResponseMessage 来反序列化对象,我们看到,手动调用...api来解析JSON, 我们首先需要考虑比如响应状态是成功的, 并且是我们需要的媒体类型, Microsoft.AspNet.WebApi.Client 提供的 ReadAsAsync 方法,内部是使用

    2.1K00

    .net 温故知新【12】:Asp.Net Core WebAPI 中的Rest风格

    ASP.NET Core WebAPI接口 在ASP.NET WebAPI中我们也能看到Rest的风格,理想很丰满,显示很骨干。...返回状态码 在RPC中Post请求我们习惯如果请求已经在服务器处理,不管处理结果是否正确,我们都返回200状态码。然后在返回数据中用其它信息来标识业务结果。...因此我们在实际设计中可能会进行Rest裁剪,我们既使用RPC的返回结果,同时多用准确的状态码,不用什么都返回200。...使用RPC风格,尽量使用合理谓词,不知道使用什么谓词的时候就用POST,Get Delete参数尽量用资源定位URL,业务错误服务端返回合适的状体吗,不知道返回什么就返回400,如果请求处理成功就用200...在上一篇中遗留的这个问题 .net 温故知新【11】:Asp.Net Core WebAPI 入门使用及介绍 所以我们在Controller中Route配置为[Controller]则不管方法接口名称是什么

    31140
    领券