在ASP.NET Web API 2中,
IHttpActionResult
在简化控制器代码方面提供了很多价值,我不想停止使用它,但是我遇到了一个问题。我需要在发送的响应上设置ETag,但找不到任何可让我访问响应头的属性。目前,我正在使用来自ApiController
的Ok<T>(T content)
帮助方法,它返回一个OkNegotiatedContentResult<T>
对象。然而,似乎没有暴露任何可以让我修改头文件的东西。
我是否遗漏了什么,或者在使用默认的IHttpActionResult
类型时确实无法做到这一点?我考虑过消息处理程序,但那样我将不得不弄清如何将ETag从操作中传递出去(对于不同的操作,ETags以不同的方式生成,因此这不是为所有操作创建通用处理程序的问题)。
我想避免使用原始的HttpResponseMessage,但目前看起来有些困难。
HttpResponseHeaders
字典,我将其合并到 IHttpActionResult 中的一个消息处理程序中。这似乎可以工作,但是没有响应头的构造函数。 - ehdvstring.Format("\"{0}\"", this.ETagValue)
替换this.ETagValue
。实际上,我是在尝试添加Content-type参数(profile="http:/..." - href必须加引号)时偶然发现了这个解决方案。 - biscuit314ResponseMessageResult
:http://stackoverflow.com/a/41459475/1644019 - Vasily Sliounaiev