我希望能够检索响应标头以进行日志记录,但确实在接口上看到了Headers属性,但我确实看到了OriginalResponse。我们应该投这个并使用吗?这会包含SS可能注入的任何标头吗?我对此接口的使用是在全局过滤器中定义为
ResponseFilters.Add((httpReq, httpResp, responseDto) =>
{
// Log portions of the response i.e. Headers
});
谢谢你, 斯蒂芬
答案 0 :(得分:3)
httpReq.Headers 与您从ASP.NET HttpRequest.Headers或自托管HttpListenerRequest.Headers获得的实例完全相同。
所以它与完全相同与手动转换底层请求并直接访问它,例如:
对于ASP.NET
var aspNetRequestHeaders = ((HttpRequest)httpReq.OriginalRequest).Headers;
对于HttpListener:
var httpListenerHeaders = ((HttpListenerRequest)httpReq.OriginalRequest).Headers;
IHttpResponse目前没有公开Headers集合,因此您需要使用类似的方法从底层HTTP Response对象访问它们。虽然您可以轻松地将它们包装在您自己的Extension方法中,例如:
public static NameValueCollection GetHeaders(this IHttpResponse)
{
var aspNetResponseHeaders = httpReq.OriginalResponse as HttpResponse;
return aspNetResponseHeaders != null
? aspNetResponseHeaders.Headers
: ((HttpListenerResponse)httpReq.OriginalResponse).Headers; //Http Listener
}