Fiddler, работающий в фоновом режиме, исправляет HttpPost для маркера доступа. Также работает в Почтальоне - PullRequest
1 голос
/ 04 марта 2020

Я не могу получить токен доступа. NET Консольное приложение. Я написал модульный тест, который не прошел.

Пост, однако, работает от почтальона, а также в консольном приложении, если у меня в фоновом режиме работает fiddler, расшифровывающий запросы https.

У меня нет знаю, почему fiddler заставляет его работать, но если он работает, я получаю токен доступа

Я получаю ошибки: «База данных ***** не найдена в файле конфигурации базы данных» или «Client_id» или «Client_secret» недействителен '

Код указан ниже:

var url = _baseUrl + "token";
        HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url);

        var grantType = "password";
        var integrated = "N";

        var username = ConfigurationManager.AppSettings["Deltek.Username"];
        var password = ConfigurationManager.AppSettings["Deltek.Password"];
        var database = ConfigurationManager.AppSettings["Deltek.DatabaseName"];
        var clientId = ConfigurationManager.AppSettings["Deltek.ClientId"];
        var clientSecret = ConfigurationManager.AppSettings["Deltek.ClientSecret"];

        Dictionary<string, string> values = new Dictionary<string, string>();
        values.Add("username", username);
        values.Add("password", password);
        values.Add("grant_type", grantType);
        values.Add("integrated", integrated);
        values.Add("database", database);
        values.Add("client_Id", clientId);
        values.Add("client_secret", clientSecret); // _keyvaultservice.getSecret(keyvault + secretname)

        var content = new FormUrlEncodedContent(values);

        request.Content = content;
        ServicePointManager.SecurityProtocol =SecurityProtocolType.Ssl3 |SecurityProtocolType.Tls12; 
        //ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
       ServicePointManager
            .ServerCertificateValidationCallback += 
            (sender, cert, chain, sslPolicyErrors) => true;

        var response = await _client.SendAsync(request);
        string json = await response.Content.ReadAsStringAsync();
        return await response.Content.ReadAsAsync<DeltekToken>();
...