gpt4 book ai didi

c# - 如何读取 WCF Web 服务中的 HTTP 请求 header ?

转载 作者:IT王子 更新时间:2023-10-29 04:01:04 25 4
gpt4 key购买 nike

在 WCF Web 服务中,如何读取 HTTP/HTTPS 请求 header ?在这种情况下,我试图确定客户端使用的原始 URL 主机。这可能在负载均衡器的 X-Forwarded-Host header 中,或者在主机 header 中(如果它是直接盒)。

我已经尝试过 OperationContext.Current.IncomingMessageHeaders.FindHeader 但我认为这是在查看 SOAP header 而不是 HTTP header 。

那么,如何读取 HTTP header 呢?当然,这是一个简单的问题,我遗漏了一些明显的东西。

编辑 - @sinfere 的回答几乎正是我所需要的。为了完整起见,这是我最终得到的:

IncomingWebRequestContext request = WebOperationContext.Current.IncomingRequest;
WebHeaderCollection headers = request.Headers;
string host = null;

if (headers["X-Forwarded-Host"] != null)
host = headers["X-Forwarded-Host"];
else if (headers["Host"] != null)
host = headers["Host"];
else
host = defaulthost; // set from a config value

最佳答案

试试 WebOperationContext.Current.IncomingRequest.Headers

我使用以下代码查看所有 header :

IncomingWebRequestContext request = WebOperationContext.Current.IncomingRequest;
WebHeaderCollection headers = request.Headers;

Console.WriteLine("-------------------------------------------------------");
Console.WriteLine(request.Method + " " + request.UriTemplateMatch.RequestUri.AbsolutePath);
foreach (string headerName in headers.AllKeys)
{
Console.WriteLine(headerName + ": " + headers[headerName]);
}
Console.WriteLine("-------------------------------------------------------");

关于c# - 如何读取 WCF Web 服务中的 HTTP 请求 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18877591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com