gpt4 book ai didi

c# - 如何从控制台应用程序使用带有表单例份验证的 Web API Restful Web 服务?

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:45 25 4
gpt4 key购买 nike

我在 Web API Controller 中声明了以下函数。 IIS Server 配置为 Web API 使用 Forms 身份验证(由于客户限制无法启用基本身份验证):

[HttpGet]
[Authorize]
[Route("")]
public ContactDTO GetPharmacy()
{
return ToContactDTO(customerContext.CurrentContact);
}

作为使用 Jquery Ajax ($.ajax(...)) 的 Web 浏览器的登录用户使用此服务工作正常且完美。但是我想使用 .Net 中的 HttpClient 类做同样的事情。我尝试了以下方法,但没有成功,总是收到 401 Unathorized 响应。

using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:17200");

AuthenticationHeaderValue authHeader = new AuthenticationHeaderValue("Forms", Convert.ToBase64String(new ASCIIEncoding().GetBytes(String.Format("{0}:{1}", "admin", "123456"))));
client.DefaultRequestHeaders.Authorization = authHeader;
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

HttpResponseMessage response = client.GetAsync("/api/pharmacies").Result;
}

我应该如何使用 HttpClient 来处理表单例份验证?

谢谢。

最佳答案

对于表单例份验证,您需要提供身份验证 cookie。要获取该 cookie,您可以使用 approach described there .然后您需要使用该 cookie 构建您的 api 请求。如果出现问题,您可以随时将您的请求与您通过浏览器发出的原始请求进行比较。

关于c# - 如何从控制台应用程序使用带有表单例份验证的 Web API Restful Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26280579/

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