.net core 请求缺少身份验证密钥。请参阅第节;“认证”;使用IHttpClientFactory

.net core 请求缺少身份验证密钥。请参阅第节;“认证”;使用IHttpClientFactory,.net-core,httprequest,.net-core-3.1,.net Core,Httprequest,.net Core 3.1,我正在尝试将HTTP请求从.NET Core 3.1 REST API发送到另一个API,但出现以下异常保留,尽管我已添加了身份验证密钥: 请求缺少身份验证密钥。请参阅“身份验证”部分 这是我的密码: public class AppService { private readonly IHttpClientFactory _clientFactory; string key = "key=llllll ......";

我正在尝试将HTTP请求从.NET Core 3.1 REST API发送到另一个API,但出现以下异常保留,尽管我已添加了身份验证密钥:

请求缺少身份验证密钥。请参阅“身份验证”部分

这是我的密码:

public class AppService
    {


        private readonly IHttpClientFactory _clientFactory;
        string key = "key=llllll ......";
        string webAPIKey = "......";
        string Id = "......";

        public AppService(IHttpClientFactory clientFactory) {
            _clientFactory = clientFactory;
           
        }

public async Task<string> sendBroadCastNotification()
        {
            Data _data = new Data();
            _data.title = "test data Ttile";
            _data.detail = "test data detail";
            Notification _notification = new Notification();
            _notification.title = "test notification Ttile";
            _notification.body = "test notification body";

            MyNotification NotifcationData = new MyNotification {
            data=_data,
            notification=_notification,
            to= "/topics/all"
            };

            try {
           

            var client = _clientFactory.CreateClient();

               

            client.DefaultRequestHeaders.Add("project_id", Id );
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", key);


                StringContent bodyOfRequest = new StringContent(System.Text.Json.JsonSerializer.Serialize(NotifcationData ), Encoding.UTF8, "application/json");

            using var httpResponse =
          await client.PostAsync("https://.......", bodyOfRequest);

                var result = httpResponse.Content.ReadAsStringAsync().Result;

                return result;
            }
            catch (Exception ex)
            {
                throw new System.ArgumentException(ex.Message.ToString(), "original");

            }
            //return null;

        }


}

公共类应用服务
{
私有只读IHttpClientFactory\u客户端工厂;
string key=“key=llllll……”;
字符串webAPIKey=“……”;
字符串Id=“……”;
公共应用程序服务(IHttpClientFactory客户端工厂){
_clientFactory=clientFactory;
}
公共异步任务sendBroadCastNotification()
{
数据_Data=新数据();
_data.title=“测试数据Ttile”;
_data.detail=“测试数据详细信息”;
通知_Notification=新通知();
_notification.title=“测试通知Ttile”;
_notification.body=“测试通知体”;
MyNotification NotifcationData=新MyNotification{
数据=_数据,
通知=\u通知,
to=“/topics/all”
};
试一试{
var client=_clientFactory.CreateClient();
client.DefaultRequestHeaders.Add(“project_id”,id);
client.DefaultRequestHeaders.Authorization=新的AuthenticationHeaderValue(“Authorization”,key);
StringContent bodyOfRequest=newStringContent(System.Text.Json.JsonSerializer.Serialize(NotifcationData),Encoding.UTF8,“application/Json”);
使用var-httpResponse=
等待客户端。PostAsync(“https://.......“,请求主体);
var result=httpResponse.Content.ReadAsStringAsync().result;
返回结果;
}
捕获(例外情况除外)
{
抛出新的System.ArgumentException(例如Message.ToString(),“original”);
}
//返回null;
}
}

我在这里找到了答案:

我使用以下行添加密钥:

client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", key);
下面我尝试添加授权标头的方式无法理解为授权标头:


client.DefaultRequestHeaders.Authorization=newauthenticationheadervalue(“Authorization”,key)

API希望授权标头采用什么格式?您当前设置的是这样做的:
授权:授权mykey123
。通过添加额外的ctor参数,可以添加一个作为前缀添加的方案。这就是你所期望的吗?@SimonC我想在标题中添加授权:“key=…mykey”I,例如PostManrequest@SimonC你可以查看我的更新