C# 如何使用system.net.http库正确添加HttpRequestHeader
我使用windows.web.http创建了一个带有标题的HttpRequestMessage库:C# 如何使用system.net.http库正确添加HttpRequestHeader,c#,azure-functions,system.net,C#,Azure Functions,System.net,我使用windows.web.http创建了一个带有标题的HttpRequestMessage库: var request = base.CreateHttpRequestMessage(); request.Headers.Add("SESSION", SessionId); return request; 在发送SendRequestAsync()之后,我能够成功地得到回复 但是在我的例子中,我需要使用system.net.http库,代码相同: var r
var request = base.CreateHttpRequestMessage();
request.Headers.Add("SESSION", SessionId);
return request;
在发送SendRequestAsync()之后,我能够成功地得到回复
但是在我的例子中,我需要使用system.net.http库,代码相同:
var request = base.CreateHttpRequestMessage();
request.Headers.Add("SESSION", SessionId);
return request;
但是当我调用SendAsync()时,我得到了一个未经授权的回复。
有人知道是什么导致了这个问题吗
var source = new CancellationTokenSource(timeout)
var response = await _client.SendAsync(request, source.Token)
.ConfigureAwait(false);
注意:我尝试在windows.web.http上手动为两个设置相同的有效会话ID,但在system.net.http上未经授权
如何初始化HttpClient:
private HttpClientHandler handler;
handler = new HttpClientHandler();
private HttpClient _client;
_client = new HttpClient(handler)
参考链接:请求标头格式:
windows.web.http: system.net.http:
谢谢。system.net.http的一个缺点是 不缓存请求。不发送消息的服务器
缓存控制
可能是一个潜在的问题。在使用Fiddler调试请求后,我发现我请求的cookie为空,因此我通过添加cookie而不是添加标头来修复此问题
CookieContainer.Add(request.RequestUri, new Cookie("SESSION", SessionId));
关于
使用system.net.http
,您的意思是使用system.net.http.HttpClient
?@JerryLiu是的…所以您使用HttpClient编写了代码,但未经授权?您是否可以使用HttpClient发布代码,在我这方面,我可以成功获取会话头。调用HttpClient.SendAsync(),我们的api服务返回未经授权,甚至我在标题上添加了有效会话更新了问题,附上了请求的屏幕截图嗨,谢谢,你能详细说明一下吗?更新了问题,附上了请求的屏幕截图