C# MVC中运行的会话cookie和HttpClient

C# MVC中运行的会话cookie和HttpClient,c#,model-view-controller,azure-mobile-services,C#,Model View Controller,Azure Mobile Services,我正在努力解决MVC应用程序和Azure移动应用程序之间的身份验证问题 MVC应用程序调用移动应用程序登录端https://.auth/login/microsoftaccout?post\u url\u login=location 如果一切正常,移动应用程序会调用Live进行身份验证并重定向到MVC应用程序 在MVC站点上,指向api的任何链接都会按预期授权并返回结果。但是在控制器中使用httpclient失败,导致401错误 当我查看跟踪和Azure移动应用程序日志时,单击链接,我看到一个

我正在努力解决MVC应用程序和Azure移动应用程序之间的身份验证问题

MVC应用程序调用移动应用程序登录端
https://.auth/login/microsoftaccout?post\u url\u login=location

如果一切正常,移动应用程序会调用Live进行身份验证并重定向到MVC应用程序

在MVC站点上,指向api的任何
链接都会按预期授权并返回结果。但是在控制器中使用httpclient失败,导致401错误

当我查看跟踪和Azure移动应用程序日志时,单击
链接,我看到一个
AppServiceAuthSession
cookie添加到请求头中。Httpclient跟踪没有此项


如何让HttpClient以与单击链接相同的方式运行?

您可以添加cookie,例如:

var cookies = new CookieContainer();
using (var handler = new HttpClientHandler() { CookieContainer = cookies })
using (var client = new HttpClient(handler) { BaseAddress = new Uri("http://example.com")})
{
    var cookieDomain = "some domain";
    cookies.Add(cookieDomain, new Cookie("CookieName", "cookie_value"));

    // Use client
}

理论上,您可以从MVC控制器上的
Response.Cookies中读取cookie,并根据需要将值传递给端点。

您可以添加cookie,例如:

var cookies = new CookieContainer();
using (var handler = new HttpClientHandler() { CookieContainer = cookies })
using (var client = new HttpClient(handler) { BaseAddress = new Uri("http://example.com")})
{
    var cookieDomain = "some domain";
    cookies.Add(cookieDomain, new Cookie("CookieName", "cookie_value"));

    // Use client
}

理论上,您可以从MVC控制器上的
Response.Cookies
中读取cookie,并根据需要将值传递给端点。

您可以为httpClient指定Cookies/头。请参见,您可以为httpClient指定cookies/头。不幸的是,这两个建议中的尼瑟成功了。当我添加cookie时,响应上的
Request.Header.cookie
显示
AppServiceAuthSession=deleted
。当我查看控制器的
response.Cookies
时,没有一个名为
AppServiceAuthSession
。不幸的是,这两个建议中的另一个有效。当我添加cookie时,响应上的
Request.Header.cookie
显示
AppServiceAuthSession=deleted
。当我查看控制器的
response.Cookies
时,没有一个名为
AppServiceAuthSession