C# GetCookies()在WebApi控制器中返回null

C# GetCookies()在WebApi控制器中返回null,c#,asp.net,asp.net-mvc,asp.net-web-api,asp.net-web-api2,C#,Asp.net,Asp.net Mvc,Asp.net Web Api,Asp.net Web Api2,我有两个项目,一个是客户端,另一个是API提供者。当我向api提供程序发送请求时,“request.Headers.GetCookies()”在客户端部分上有值,但在 public class AuthorizationServerProvider : OAuthAuthorizationServerProvider { public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredenti

我有两个项目,一个是客户端,另一个是API提供者。当我向api提供程序发送请求时,“request.Headers.GetCookies()”在客户端部分上有值,但在

public class AuthorizationServerProvider : OAuthAuthorizationServerProvider
{
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
        var test1 = context.Request.Headers.ToList().FirstOrDefault(h => h.Key == "Cookie");
test1为null,并且为空

public class CustomAuthorizeAttribute : AuthorizeAttribute
{

    public override void OnAuthorization(HttpActionContext actionContext)
    {
          var test2 = actionContext.Request.Headers.GetCookies();
test2为空,这是我发送请求的方式:

[HttpPost]
public ActionResult PostToApiProvider(RequestViewModel requestModel)
{
    var request = new HttpResponseMessage();
    // Here I add cookie header in request for authentification
    if (HttpContext.Request.Cookies.Count != 0)
        {
            var cookieList = new List<string>();
            for (var i = 0; i < Request.Cookies.Count; i++)
            {
                cookieList.Add(Request.Cookies[i].Value);
            }

            request.Headers.Add("Cookie", cookieList);
        }
    var response = client.SendAsync(request).Result;
    var testRequestCookies = request.Headers.GetCookies();
return View("SomeView", model)
[HttpPost]
公共操作结果PostToApiProvider(RequestViewModel requestModel)
{
var request=newhttpresponsemessage();
//在这里,我在身份验证请求中添加cookie头
if(HttpContext.Request.Cookies.Count!=0)
{
var cookieList=新列表();
对于(变量i=0;i
request和TestRequestCookie(调用api提供程序之前和之后)将具有cookie值,请参见屏幕截图:


如果我能在更多代码方面提供帮助,请询问。谢谢:)

以下是如何获取cookie值

private async Task<string> GetCookieValue(string url, string cookieName)
{
    var cookieContainer = new CookieContainer();
    var uri = new Uri(url);
    using (var httpClientHandler = new HttpClientHandler
    {
        CookieContainer = cookieContainer
    })
    {
        using (var httpClient = new HttpClient(httpClientHandler))
        {
            await httpClient.GetAsync(uri);
            var cookie = cookieContainer.GetCookies(uri).Cast<Cookie>().FirstOrDefault(x => x.Name == cookieName);
            return cookie?.Value;
        }
    }
}
private异步任务GetCookieValue(字符串url,字符串cookieName)
{
var cookieContainer=新的cookieContainer();
var uri=新的uri(url);
使用(var httpClientHandler=新的httpClientHandler
{
CookieContainer=CookieContainer
})
{
使用(var httpClient=新的httpClient(httpClientHandler))
{
等待httpClient.GetAsync(uri);
var cookie=cookieContainer.GetCookies(uri.Cast().FirstOrDefault(x=>x.Name==cookieName);
返回cookie?值;
}
}
}