我希望能够检索响应标头以进行日志记录,但确实在接口上看到了 Headers 属性,但我确实看到了 OriginalResponse。我们应该投射并使用它吗?这会包含 SS 可能注入的任何标头吗?我对该接口的使用是在定义为的全局过滤器中
ResponseFilters.Add((httpReq, httpResp, responseDto) =>
{
// Log portions of the response i.e. Headers
});
谢谢你,斯蒂芬
我希望能够检索响应标头以进行日志记录,但确实在接口上看到了 Headers 属性,但我确实看到了 OriginalResponse。我们应该投射并使用它吗?这会包含 SS 可能注入的任何标头吗?我对该接口的使用是在定义为的全局过滤器中
ResponseFilters.Add((httpReq, httpResp, responseDto) =>
{
// Log portions of the response i.e. Headers
});
谢谢你,斯蒂芬
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 对象访问它们。尽管您可以轻松地将它们包装在您自己的扩展方法中,例如:
public static NameValueCollection GetHeaders(this IHttpResponse)
{
var aspNetResponseHeaders = httpReq.OriginalResponse as HttpResponse;
return aspNetResponseHeaders != null
? aspNetResponseHeaders.Headers
: ((HttpListenerResponse)httpReq.OriginalResponse).Headers; //Http Listener
}