我们的应用程序使用带有linkedin的oauth2来发布到我们客户的LI个人资料。授权用户的方法效果很好,但是获取访问令牌的下一部分代码将导致“底层连接已关闭:发送时发生意外错误”异常。内部异常显示“身份验证失败,因为远程方已关闭传输流”。
我已经验证了我们的应用程序凭证正确,并且据我们所知,直到今天,这种方法一直有效。错误使它听起来像是LinkedIn方面的问题,但我不确定100%。关于如何解决此问题的任何想法?
这是失败的方法的代码。
var accessCodeUri =
string.Format(
"https://www.linkedin.com/uas/oauth2/accessToken?format=json&grant_type=authorization_code&code={0}&redirect_uri={1}&client_id={2}&client_secret={3}",
authorizationCode,
redirectUri.AbsoluteUri,
linkedInApiKey,
linkedInSecretKey);
string responseFromServer = string.Empty;
WebRequest request = WebRequest.Create(new Uri(accessCodeUri).AbsoluteUri);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = 0;
request.Headers["UserAgent"] = "JB oAuth2";
Stream dataStream = request.GetRequestStream();
string postData = string.Empty;
byte[] postArray = Encoding.ASCII.GetBytes(postData);
dataStream.Write(postArray, 0, postArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
dataStream = response.GetResponseStream();
var reader = new StreamReader(dataStream);
responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
答案 0 :(得分:8)
在方法顶部添加以下内容似乎已解决了问题。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;