2017-10-19 64 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設置爲使用協議的默認機器設置。

相關問題