2017-10-19 9 views
0

J'ai ce morceau de code: (nom d'utilisateur et mot de passe sont modifiés dans l'exemple)C#, OAuth2 échoue en mode débogage, mais fonctionne bien quand exécutable en cours d'exécution

string un="[email protected]"; 
string pw="[email protected]"; 
string url="https://login.salesforce.com/services/oauth/token"; 
string cliid = "3MVG9yZ.WNae345QAvlJ.HwD94PbdkgMvpoq2IgBi3CPP.r8EfNQB.uAAm72swYrQSaG5TdhXseqChQiIBvox"; 
string clisec = "33861436554340449385"; 
HOauth2 h = new HOauth2(lurl,cliid,clisec); 
HOauthResult r = h.authenticate(un, pw); 
Console.WriteLine(r.getErm()); 
Console.WriteLine(r.getAccessToken()); 
Console.ReadKey(); 

Si je construis le projet et exécutez exécutable je reçois résultat attendu:

NoError 00DA0000000tuBSm ARsAQQZEdOXXXZAqmYtG.Sj9.6d7_DYdrdKqdnoAkANT4I3Lb4F3Pgz0AYSkRWVJKTmy3cqbGWcV2gSYCxvAbXkg6mJ8l_jK

Toutefois, l'exécution du projet en VS en mode Debug/Release le même morceau de code produit sortie:

invalid_grant | échec d'authentification

Il me rend fou, je ne peux pas déboguer le reste du code . Est-ce que quelqu'un a connu un comportement similaire, et y avait-il une solution au problème. J'ai activé system.diagnostics dans App.config et j'ai comparé les flux de données au serveur dans les deux cas et ils sont identiques, octet pour octet.

+0

Veuillez supprimer le dossier Bin \ Debug, puis nettoyer et reconstruire votre projet, voir le résultat, comme vous avez dit que vous avez ce problème lors du débogage, a-t-il toujours ce problème si vous exécutez simplement débogage (Ctrl + F5) "dans votre IDE VS? –

+0

Bonjour Jack, je l'ai fait comme vous l'avez suggéré, mais il se comporte toujours la même chose. J'ai mis en place le point de rupture à la ligne Console.WriteLn ... et il échoue lorsqu'il est exécuté avec F5. L'exécuter avec Ctrl-F5 fonctionne sans problème. – HarisK

+0

Aucune classe HOauth2/HOauthResult, désolé pour cela je ne pouvais pas repro ce problème. S'il vous plaît essayez d'activer les paramètres d'exception dans le menu Déboguer-> Windows-> Paramètres d'exception, puis déboguer votre application dans votre IDE VS, voir le résultat. Peut-être qu'il a certaines exceptions non gérées. Avez-vous d'autres débogage VS Environnement cette application? Au moins, nous pourrions savoir si c'est lié à l'IDE VS ou à d'autres. –

Répondre

0

Le problème n'est pas avec le code mais avec l'environnement de développement. VS pour une raison quelconque utilise TLS1.0 comme protocole par défaut, tandis que pour la machine elle-même, c'est TLS1.2 Après avoir forcé TLS1.2 dans le code, en définissant la valeur sur ServicePointManager, tout a commencé à fonctionner. Il a fallu un certain temps pour comprendre cela puisque les messages d'erreur délivrés par le serveur distant qui acceptait TLS1.2 n'étaient pas descriptifs (400 Bad request). La vraie solution serait de configurer VS pour utiliser les paramètres par défaut de la machine pour le protocole.