Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法创建一个Accept属性来强制ASP.NET核心控制器操作中的Accept标头检查?_C#_.net_Asp.net Core_Asp.net Core Webapi - Fatal编程技术网

C# 有没有办法创建一个Accept属性来强制ASP.NET核心控制器操作中的Accept标头检查?

C# 有没有办法创建一个Accept属性来强制ASP.NET核心控制器操作中的Accept标头检查?,c#,.net,asp.net-core,asp.net-core-webapi,C#,.net,Asp.net Core,Asp.net Core Webapi,只是想知道是否有一种方法可以通过ASP.NET核心中的属性强制检查HTTP头值是否属于一组给定的值(例如,application/json,application/xml) 我知道有产品属性(): [产生(“应用程序/json”、“应用程序/xml”)] 但更多的是关于支持的内容类型,而不是关于Accept标头分析 如果Accept头的值不是,我会期望类似的结果返回406 HTTP代码: [Accept("application/json", "application/xml")] 如果没有现

只是想知道是否有一种方法可以通过ASP.NET核心中的属性强制检查HTTP头值是否属于一组给定的值(例如,
application/json
application/xml

我知道有
产品属性
():

[产生(“应用程序/json”、“应用程序/xml”)]

但更多的是关于支持的内容类型,而不是关于Accept标头分析

如果Accept头的值不是,我会期望类似的结果返回406 HTTP代码:

[Accept("application/json", "application/xml")]

如果没有现成的属性,如何创建一个?

这样的属性是不必要的。
Accept
头只是客户机为特定响应类型指定首选项的一种方式,客户机可以自由地请求它想要的任何东西。它在服务器上决定如何实际响应,如果它不支持特定的内容类型,那么它只返回
415不支持的媒体类型
响应。否则,它将根据客户端的
Accept
标题中内容类型的顺序返回它实际支持的第一个内容类型

FWIW,重要的是要理解HTTP和底层IP协议是特意设计来允许客户端和服务器之间的松散通信的。“请求”的术语本身就意味着这种性质。服务器不能也不应该强制客户端执行任何行为,反之亦然。他们所能做的就是指定他们的偏好,然后协商(另一个关键术语)对特定请求的响应


长话短说,您无法阻止客户要求特定内容类型之类的内容。但是,如果是这种情况,服务器可以响应它不支持给定的类型。

这样的属性是不必要的。
Accept
头只是客户机为特定响应类型指定首选项的一种方式,客户机可以自由地请求它想要的任何东西。它在服务器上决定如何实际响应,如果它不支持特定的内容类型,那么它只返回
415不支持的媒体类型
响应。否则,它将根据客户端的
Accept
标题中内容类型的顺序返回它实际支持的第一个内容类型

FWIW,重要的是要理解HTTP和底层IP协议是特意设计来允许客户端和服务器之间的松散通信的。“请求”的术语本身就意味着这种性质。服务器不能也不应该强制客户端执行任何行为,反之亦然。他们所能做的就是指定他们的偏好,然后协商(另一个关键术语)对特定请求的响应


长话短说,您无法阻止客户要求特定内容类型之类的内容。但是,如果是这种情况,服务器可以响应它不支持给定的类型。

看看这个应答器看看这个应答器“它在服务器上决定如何实际响应,如果它不支持特定的内容类型,那么它只返回415个不支持的媒体类型响应。”这是我的观点,以促进一些操作和什么接受值可以被处理,这样当操作体被处理时,它只接受其中的值。这是由添加到服务器的媒体类型和诸如products属性之类的东西决定的。如果您不希望某个特定内容符合响应条件,请将其删除。“它在服务器上决定如何实际响应,如果它不支持特定的内容类型,则只返回415个不受支持的媒体类型响应。”这是我的观点,以促进一些操作和什么接受值可以被处理,这样当操作体被处理时,它只接受其中的值。这是由添加到服务器的媒体类型和诸如products属性之类的东西决定的。如果您不希望某个特定的东西可以作为响应,那么将其删除。