如何在.NETCore2实现中更改请求标头

时间:2018-01-15 17:11:28

标签: servicestack

出于测试目的,我需要更改传入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

1 个答案:

答案 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];
    }
});