【发布时间】:2021-08-15 15:25:30
【问题描述】:
我正在尝试从 WCF 服务调用 .net 核心 Web api。
这是我的代码:
var client = new HttpClient();
client.BaseAddress = new Uri("http://...");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync("api/tasks");
return await response.Content.ReadAsStringAsync();
响应返回 401 错误:未经授权。
我的 web api 支持 windows 和匿名身份验证,我在允许的 cors 来源中添加了“*”:
services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
{
builder
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
.WithOrigins("http://localhost:4200","http://...", "*");
}));
我的 web api 控制器中的 get 函数是:
// GET api/tasks
[AllowAnonymous]
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2" };
}
仍然是相同的错误响应。知道为什么吗?
【问题讨论】:
-
与 Cors 无关。您的 API 需要 JWT 吗?
-
@serge- 不,它没有,正如我在它支持匿名身份验证之前所写的那样
-
你能发布一个你正在和控制器一起调用的ApI吗?
-
@serge 当然,我更新了我的问题
-
谢谢,但我可以看到 GetAsync("api/tasks");您的 api/tasks 操作在哪里?
标签: wcf asp.net-core-webapi http-status-code-401