2017-10-19 39 views
0

时,我有这段代码工作确定:(用户名和密码在本例中被改变)C#,OAuth2用户无法在调试模式,但运行的可执行

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(); 

如果我生成项目,并运行可执行文件,我得到预期输出:

NOERROR 00DA0000000tuBSm ARsAQQZEdOXXXZAqmYtG.Sj9.6d7_DYdrdKqdnoAkANT4I3Lb4F3Pgz0AYSkRWVJKTmy3cqbGWcV2gSYCxvAbXkg6mJ8l_jK

然而,在Debug/Release模式下的同一段代码运行在VS项目产生输出:

invalid_grant |认证失败

这是推动我疯了,我无法调试代码的其余部分。 有没有人遇到类似的行为,并有解决问题的方法。 我在中启用了system.diagnostics,并在两种情况下将数据流与服务器进行了比较,它们是相同的,即字节。

+0

请删除Bin \ Debug文件夹,然后清理并重新生成项目,查看结果,如您所说在调试过程中遇到此问题,如果您只是使用“start without run调试(Ctrl + F5)“在您的VS IDE? –

+0

嗨,杰克,我按照你的建议,但它仍然表现相同。我在Console.WriteLn ...行设置了断点,并且在使用F5运行时失败。使用Ctrl-F5运行它没有问题。 – HarisK

+0

没有课HOauth2/HOauthResult,对不起,我不能repro这个问题。请尝试在菜单Debug-> Windows-> Exception Settings下启用异常设置,然后在VS IDE中调试您的应用程序,查看结果。也许它有一些不受欢迎的例外。你有其他VS环境调试这个应用程序?至少,我们可以知道它是否与VS IDE或其他相关。 –

回答

0

问题不在于代码,而在于开发环境。 VS出于某种原因使用TLS1.0作为默认协议,而对于机器本身,它是TLS1.2 在代码中强制使用TLS1.2后,将值设置为ServicePointManager,一切开始工作。花费一些时间来解决这个问题,因为接受TLS1.2的远程服务器传递的错误消息不是描述性的(400错误请求)。 真正的解决方案是将VS设置为使用协议的默认机器设置。

相关问题