2016-06-23 4 views
0

Я использую Visual Studio 2015 для нашего тестирования производительности. Я использую веб-тест для вызова конечной точки API. Используя скрипт и HTTPRequester, я могу без проблем подключиться к API. Когда я использую веб-тест, я получаю 401 несанкционированного доступа. Разница между веб-сайтом и всем остальным заключается в том, что веб-сайт использует авторизацию: Negotiate вместо авторизации: Basic.Принудительное разрешение на базовое в веб-тесте для производительности

Как в Visual Studio 2015 я могу принудительно разрешить авторизацию Basic, а не вести переговоры?

Вот заголовок как WebTest в настоящее время создает его:

POST /Foo/api.asp?$api=FooBarAPI HTTP/1.1 
Accept : application/xml 
User-Agent : Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) 
Accept-Language : en-US 
Accept-Encoding : GZIP 
Content-Type : application/xml 
Authorization : Negotiate (Base64 Encoded Login Information) 
Host : Foo.Bar.net 
Content-Length : 0 

Если это дубликат Я извиняюсь. Я искал весь день информацию об этом, и я ничего не нашел, что помогает.

+0

На ваш вопрос был дан ответ? Если нет, то, пожалуйста, отредактируйте его, чтобы сделать его более понятным. Если он был дан ответ, пожалуйста, прочитайте о [принятии ответов] (http://stackoverflow.com/help/accepted-answer). – AdrianHHH

ответ

0

Базовая аутентификация выполняется путем добавления соответствующего поля заголовка в запросы. Вы можете использовать плагин на основе следующего кода.

public string UserName { get; set; } 
public string Password { get; set; } 

public override void PreRequest(object sender, PreRequestEventArgs e) 
{ 
    e.Request.Headers.Add("Authorization", "Basic " + GetEncodedAuthorisation(UserName, Password)); 
} 

private string GetEncodedAuthorisation(string userName, string password) 
{ 
    return Encode8BitStringInBase64(userName + ":" + password); 
} 

private string Encode8BitStringInBase64(string source) 
{ 
    byte[] outBytes = new byte[source.Length]; 

    for (int ix = 0; ix < source.Length; ix++) 
    { 
     char ch = source[ix]; 
     outBytes[ix] = (byte)(((int)ch) & 0xFF); 
    } 

    return Convert.ToBase64String(outBytes); 
} 

См. Также this page.


Комментарий говорит «У меня есть сотни тестов производительности я должен изменить сейчас». Файл «.webtest» - это просто XML. Вы можете попробовать сделать код выше WebTestPlugin, то есть тот, который вызывается для каждого запроса в тесте. Затем вручную добавьте это к одному тесту и посмотрите, какие изменения внесены в XML этого теста. Затем это должно быть простой сценарий (или редактирование) задачи для изменения всех файлов.

+0

Это очень похоже на то, что я делал. Я надеялся, что есть какая-то встроенная настройка, чтобы заставить ее переходить к основному. У меня есть сотни тестов производительности, которые я должен изменить сейчас. –

0

Другой вариант - вы можете захватить базовый токен аутентификации, используя Postman и передать его в заголовках. Это сработало для меня.

Graphic showing auth token passed as header

 Смежные вопросы

  • Нет связанных вопросов^_^