我目前正在開(kāi)發(fā)一個(gè) C# Web 應(yīng)用程序,它使用 Invoice Ninja 的 API 來(lái)檢查付款/發(fā)票信息。我已設(shè)法使用 HttpClient 在本地計(jì)算機(jī)中使其正常工作,但每當(dāng)將其部署到部署服務(wù)器(Windows Azure VM)時(shí),我都會(huì)收到以下錯(cuò)誤:請(qǐng)求被中止:無(wú)法創(chuàng)建 SSL/TLS 安全通道。對(duì)于啟用和未啟用 SSL 的站點(diǎn),該錯(cuò)誤都是相同的(開(kāi)發(fā)站點(diǎn)沒(méi)有 SSL,而實(shí)時(shí)站點(diǎn)有)。我嘗試使用以下解決方案:ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;在創(chuàng)建 HttpClient 之前添加。使用WebRequestHandler handler = new WebRequestHandler(); handler.ServerCertificateCustomValidationCallback += (sender, certificate, chain, errors) => true;using (HttpClient client = new HttpClient(handler)) { //Code goes here}手動(dòng)將證書(shū)添加到WebRequestHandlerfromX509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);store.Open(OpenFlags.ReadOnly);X509Certificate2Collection collection = store.Certificates;所有其他 HTTP 調(diào)用(Twilio、Authy、SendGrid)我一直在應(yīng)用程序內(nèi)部按預(yù)期工作,但調(diào)用 Invoice Ninja 讓我難住了。我不完全確定從這里去哪里,任何幫助將不勝感激。編輯:我制作了一個(gè)簡(jiǎn)單的控制臺(tái)應(yīng)用程序來(lái)檢查是否是 IIS 擾亂了 Http 調(diào)用,但不幸的是同樣的事情仍然發(fā)生。我仍然收到“請(qǐng)求已中止:無(wú)法創(chuàng)建 SSL/TLS 安全通道”的消息。錯(cuò)誤。這可能是某種服務(wù)器配置問(wèn)題嗎?編輯2:我嘗試在不同的虛擬機(jī)上運(yùn)行控制臺(tái)測(cè)試應(yīng)用程序,并且它在那里運(yùn)行正常。我更不確定從這里該去哪里。這是我嘗試過(guò)的代碼,以防萬(wàn)一它有幫助。
1 回答

慕森王
TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊
看來(lái)我看待問(wèn)題的方式是錯(cuò)誤的。
我做了一些更多的探索,并嘗試在服務(wù)器上的 IE 中打開(kāi)其 API 的 Swagger 文檔,發(fā)現(xiàn)這是由于我們的服務(wù)器沒(méi)有 Invoice Ninja 所需的必要密碼套件造成的,因?yàn)槲覀兊姆?wù)器顯然正在使用密碼套件的自定義列表。
我添加了 API 正在使用的密碼套件,然后重新啟動(dòng)了虛擬機(jī)。我仍然需要ServicePointManager.SecurityProtocol |=SecurityProtocolType.Tls12;
網(wǎng)絡(luò)應(yīng)用程序的線路,但除此之外,問(wèn)題實(shí)際上已經(jīng)解決了。
- 1 回答
- 0 關(guān)注
- 232 瀏覽
添加回答
舉報(bào)
0/150
提交
取消