【发布时间】:2017-06-22 20:09:55
【问题描述】:
无论我尝试什么,我似乎都无法从回复的 Content-Type 标头中删除 ; charset=utf-8 部分。
[HttpGet("~/appid")]
// Doesn't work
//[Produces("application/fido.trusted-apps+json")]
public string GetAppId()
{
// Doesn't work
Response.ContentType = "application/fido.trusted-apps+json";
// Doesn't work
//Response.ContentType = null;
//Response.Headers.Add("Content-Type", "application/fido.trusted-apps+json");
return JsonConvert.SerializeObject(new
{
foo = true
});
}
当我只想要application/fido.trusted-apps+json 时,我总是得到application/fido.trusted-apps+json; charset=utf-8。
注意:这是为了符合 U2F 的 FIDO AppID and Facet Specification v1.0 声明:
响应必须将 MIME Content-Type 设置为“application/fido.trusted-apps+json”。
【问题讨论】:
-
我认为
[Produces]属性的内容必须是MediaTypeCollection的成员。也许将application/fido.trusted-aps+json添加到集合中会使其工作。见docs.microsoft.com/en-us/aspnet/core/api/… -
从哪里添加到
MediaTypeCollection?在某处启动? -
这看起来不太有用,因为我认为您不能修改它,除非使用自定义格式化程序。请看下面我的回答。我记得在某处读过,如果您无法修改来自控制器的响应流,而是如果您想修改它,您必须自己处理整个响应,也许使用中间件(?)。自定义格式化程序似乎是您最好的选择。
-
我最终采用了一种更简单的方法,即使用中间件。请看下面我的回答。谢谢。
标签: asp.net asp.net-mvc