RestSharp 不返回任何数据?

RestSharp not returning any data?

我们正在尝试测试强制其使用 TLS1.2 的 .Net 4.0 控制台应用程序,但我没有得到它 return 任何数据。

如果我使用 Postman 并在 https://domainname.com/TestEndpoint/api/v1 上执行 GET,那么我会按原样得到一些简单的文本 returned。

如果我在 .Net 4 控制台应用程序中使用以下代码并查看 response.Content,数据为空白。我对 RestSharp 做错了什么吗?

try
{
    //https://domainname.com/TestEndpoint/api/v1

    var endPoint = "https://domainname.com/";
    var client = new RestClient(endPoint);

    var request = new RestRequest("TestEndpoint/api/v1", Method.GET);
    IRestResponse response = client.Execute(request);
    var content = response.Content; // raw content as string

    Console.WriteLine(response.Content);

}
catch (Exception ex)
{
    logger.Error("Error: {0} | {1} | {2}", ex.Message, ex.StackTrace, ex.InnerException);
}

据我了解,您的计算机上安装了 .NET 4.5,但您的控制台应用程序的目标是 .NET 4.0。

使其工作所需的一行代码是:

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

如果没有该行,您对 TLS 1.2 端点的请求将失败(我知道您已经知道)。

我怀疑您的请求正在悄无声息地失败,并且没有触发 catch 块。如果您在 Fiddler 或其他流量监控软件中检查您的请求,您可能会看到服务器返回的响应,其中包含 "SSL/TLS incompatibility" 的内容。 RestSharp 可能会在内部抑制任何异常,或者根本不抛出任何异常(取决于 API 调用响应的状态代码)。

Tl;dr 鉴于我们在聊天中的对话,我知道你知道如何工作。观察 Fiddler 中的流量会告诉您为什么它 失败