代码很简单:
// A simple HTTP GET call with RestSharp.
var url = "https://sandbox.tradier.com/v1/markets/quotes?symbols=MSFT";
var bearerToken = "thisCouldBeYourToken";
var client = new RestClient(url);
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", $"Bearer {bearerToken}");
var response = await client.ExecuteTaskAsync<MyClass>(request)
该代码是与ClickOnce一起部署的.NET 4.7.2 WPF应用程序的一部分。
几天前,没有任何更改,此呼叫突然返回An existing connection was forcibly closed by the remote host
。但是仅适用于此特定的URL。我对其他URL使用完全相同的代码,也没有任何问题。
真的很奇怪,当我调试应用程序时没有发生异常,而是收到了所需的响应。即使我在没有调试的情况下启动应用程序,也没有错误。我重新部署了该应用程序,但仍然在那里发生了错误。因此由于某种原因,呼叫在部署后会以不同的方式发出!顺便说一句:部署的版本也在我的计算机上运行,而不是在其他地方。
经过一些密集的搜索后,我遇到了this post,它建议将SecurityProtocol
显式设置为TLS 1.2(默认值:SystemDefault
):
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
它像一种魅力。现在,已部署的版本也正在运行,没有任何问题。因此,我想该网址现在需要TLS 1.2。但是,为什么该应用程序甚至在直接启动之前就运行,而在通过ClickOnce部署时却遇到了问题?
我正在尝试为一种非常奇怪的行为找到一种解释。代码很简单://使用RestSharp进行简单的HTTP GET调用。 var url =“ https://sandbox.tradier.com/v1/markets/quotes?...