Authentication failed because the remote party has closed the transport stream exception when getting a response from webservice

我怕爱的太早我们不能终老 提交于 2019-11-28 22:01:53

问题


I am calling a third party service and when I ask for a response it throws out an exception that says

"Authentication failed because the remote party has closed the transport stream exception".

I think that there is a problem in sending credentials. I have even tried supplying new credentials. Here is the full code

string get_url = "https://**.*******.com/com/******/webservices/public_webservice.cfc?wsdl&Method=CreateUser&SiteID=**&WSPassword=******&UserName=******";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(get_url);
request.MaximumAutomaticRedirections = 4;
request.MaximumResponseHeadersLength = 4;
request.Credentials = CredentialCache.DefaultCredentials;
//request.UseDefaultCredentials = false;
//request.Credentials = new System.Net.NetworkCredential("*****", "*****");
request.ContentType = "application/x-www-form-urlencoded; charset=ISO-8859-1";

// Show the sent stream
//lbl_send_stream.Text = send_stream;
//lbl_send_stream.Text = get_url;
// Get UserId And LoginToken From Third Party DB
// ==============================================
//Exception gets throwed When code hits here
HttpWebResponse response = (HttpWebResponse)request.GetResponse();


回答1:


I found the answer, It was because the third party webservice we were calling did not support TLS 1.0 they supported 1.1 and 1.2. So I had to change the security protocol.

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;



回答2:


I had a limitation of using TLS 1.2 only and more than anything else the resource address (URL/address) was local. So above solution didn't work for me. After closely analysing web.config I tried using <bypasslist> for local URLs and miracle happened!

<system.net>
    <defaultProxy>
      <proxy usesystemdefault="false" proxyaddress="<yourproxyaddress>" bypassonlocal="true" />
      <bypasslist>  
        <add address="[a-z]+\.abcd\.net\.au$" />  
      </bypasslist>
    </defaultProxy>
</system.net>

Please note I was already using <proxy> setting for accessing other external URLs so not having this setup was not allowed either. Hope this helps!



来源:https://stackoverflow.com/questions/35621686/authentication-failed-because-the-remote-party-has-closed-the-transport-stream-e

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!