我有一些代码使用HttpClient
进行Server2Server调用。下面是一些简单的代码HttpClient正在修改我的原始请求以更改域
代码,以请求
private HttpRequestMessage GetRequest(Uri uri, NameValueCollection headers)
{
var method = HttpMethod.Get;
var request = new HttpRequestMessage(method, uri);
foreach (string v in headers)
{
var success = request.Headers.TryAddWithoutValidation(v, headers[v]);
if (!success)
{
// log something (no logs are appearing)
}
}
return request;
}
代码,以使该请求
private void AsyncCallUrl(Uri url, NameValueCollection headers)
{
object result1 = null;
var handler = new HttpClientHandler() { AllowAutoRedirect = false };
using (HttpClient client = new HttpClient(handler))
{
var request = GetRequest(url, headers);
using (HttpResponseMessage response = client.SendAsync(request).Result) // when this line is executed the request object's domain is changed to something else
{
using (HttpContent content = response.Content)
{
result1 = content.ReadAsStringAsync().Result;
}
}
}
该request
对象与正确的域创建适当的,我验证。我还验证了网络流量将进入错误的域,即使是request
对象也会显示新的错误域。我不知道为什么会发生这种情况。我甚至设置AllowAutoRedirect
到false
注:作为一个说明我注意到,如果我用GetAsync
代替SendAsync
域变化不会发生。然而,这不是一个理想的解决方案,因为为了添加标题,我需要将它们添加到HttpClient
本身,并且此代码位于IIS服务器上,并且我不想为每个请求创建一个新客户端
什么是域,你是否控制DNS入口/服务器等? –
原始域名是我公司用来接收传入流量的服务器(让我们称之为prod.company.com),但是新的域名是(dev.anothercompany.com),其他公司是我们的母公司,只是买了我们。似乎是一些IIS配置可能?我认为域的细节并不重要,仅仅是它正在改变的事实 – sedavidw
'NameValueCollection头部'集合是否恰巧包含'Host'的条目? – spender