出于测试目的,我需要更改传入HttpRequest的Authorization标头 - 从Basic到Bearer(处理在ServiceStack插件中完成,该插件在PreRequestFilters阶段执行)。
这曾经在ServiceStack 4.5.x版本(.NET Framework 4.6.2)中工作,但是一旦我将代码升级到5.0.2和NETCore2就失败了。
查看源代码我看到NETCore实现使用NetCoreRequest类进行请求实现,使用NetCoreHeadersCollection类来实现头部集合。
不幸的是,没有办法改变上面提到的集合中的标题,这就是我在源代码中看到的:
public override void Add(string name, string value) => throw new NotSupportedException();
public override void Clear() => throw new NotSupportedException();
public override void Remove(string name) => throw new NotSupportedException();
public override void Set(string key, string value) => throw new NotSupportedException();
在请求过滤器和NETCore实现中的服务之前是否有另一种更改请求标头的方法?
谢谢,
Emil Petrisor答案 0 :(得分:0)
您可以使用以下命令访问.NET Core的请求/响应标头集合。
PreRequestFilters.Add((httpReq, httpRes) => {
if (httpReq.OriginalRequest is HttpRequest coreReq)
{
coreReq.Headers[HttpHeaders.Authorization] = ...;
}
if (httpRes.OriginalResponse is HttpResponse coreRes)
{
var authHeader = coreRes.Headers[HttpHeaders.Authorization];
}
});