【问题标题】:401 error calling Web API Core from WCF service从 WCF 服务调用 Web API 核心时出现 401 错误
【发布时间】: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


【解决方案1】:

我认为您的网址中有错误。

试试这个:

 HttpResponseMessage response = await client.GetAsync("api/tasks/get");

【讨论】:

  • 你检查过开发者工具吗?通常会有更多的解释。
  • 并尝试将属性路由添加到您的操作 [HttpGet("~/api/tasks/get") ] public ActionResult> Get()
【解决方案2】:

所以,对我来说,这显然是一个身份验证问题。

我从我的 web api 中删除了 windows 身份验证,并且只允许匿名身份验证。

它对我有用。

【讨论】:

    猜你喜欢
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 2013-07-09
    • 2015-12-29
    相关资源
    最近更新 更多