Пропустить проверку заголовка в BeforeSendRequest - PullRequest
0 голосов
/ 19 октября 2018

В соответствии с этой темой я использую этот блок кода

    public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request,  System.ServiceModel.IClientChannel channel)
{
    HttpRequestMessageProperty httpRequestMessage;
    object httpRequestMessageObject;
    if (request.Properties.TryGetValue(HttpRequestMessageProperty.Name, out httpRequestMessageObject))
    {
        httpRequestMessage = httpRequestMessageObject as HttpRequestMessageProperty;
        if (string.IsNullOrEmpty(httpRequestMessage.Headers[USER_AGENT_HTTP_HEADER]))
        {
            httpRequestMessage.Headers[USER_AGENT_HTTP_HEADER] = this.m_userAgent;
        }
    }
    else
    {
        httpRequestMessage = new HttpRequestMessageProperty();
        requestMessageProperty.Headers.Add("Authorization",  token);
        request.Properties.Add(HttpRequestMessageProperty.Name, httpRequestMessage);
    }

, но, к сожалению, поскольку я перемещаю код из .net framwork 4.7 в .net core 2.1 проект, я получаю этокод ошибки:

Не удалось скопировать заголовок HTTP «Авторизация» со значением «qqqqqqqqq =» в «System.Net.Http.Headers.HttpRequestHeaders». \ r \ nРазмер значения «qqqqqqqqq ='неверно.

В старом проекте все работало нормально Можно ли пропустить проверку заголовка авторизации?Спасибо

1 Ответ

0 голосов
/ 17 июля 2019

.net core проверяет формат заголовка авторизации.Согласно https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization заголовок авторизации должен быть в формате:
Authorization: <type> <credentials>

Вы получите эту ошибку, если ваш заголовок авторизации не содержит пробела между type и учетные данные или содержат несколько пробелов

Это будет нормально работать:

requestMessageProperty.Headers.Add("Authorization", $"my-custom-auth-type {token}");
...