Inloggen
 
 
 
 
    
Authentication failed because the remote party has closed the transport stream
Location: BlogsFerry Onderwater - Developer    
Posted by: Ferry Onderwater 1-2-2008 10:40
Suddenly an error occurred during a call to our webservice. There had been a change, a new certificate had been installed. Searching Google gave no result that solved the problem and the exception referred to some kind of SSL-errors.

The complete error was:

System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Authentication failed because the remote party has closed the transport stream.
   at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
   at System.Net.TlsStream.CallProcessAuthentication(Object state)
   at System.Threading.ExecutionContext.runTryCode(Object userData)
   at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
   at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
   at System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size)
   at System.Net.ConnectStream.WriteHeaders(Boolean async)
   --- End of inner exception stack trace ---
   at System.Net.HttpWebRequest.GetResponse()
   at System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri, ICredentials credentials)
   at System.Xml.XmlDownloadManager.GetStream(Uri uri, ICredentials credentials)
   at System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
   at System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings, XmlParserContext inputContext)
   at System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings)
   at FileDispatcher.ValidateAgainstSchema(String UploadFile, Int32 Version)
   at FileDispatcher.DocumentExists(String UploadFileString)
   --- End of inner exception stack trace ---
   at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at ExportSalarisSlip.nl.maxcc.staff.MaxCCFileDispatcherwebservice.DocumentExists(String UploadFileString)
   at ExportSalarisSlip.Form1.btnExport_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

I draw the wrong conclusions from this exception. Since the problem occurred since a new certificate was installed it seemed logical the certificate caused the problem.

After spending some time I decided to stop looking at the certificate and focus on the code. The problem seemed to arrise when the webmethod 'FileDispatcher.DocumentExists' was executed and specifically when an XML-reader was created.
Looking further into the problem gave us the answer:

The webservice wanted to read an XML-file which was available locally. It did so by calling https://localhost/file.xml. When the new certificate was installed several other certificates where installed as well. This made us decide all websites/services would only be available on a specific IP-address. Therefor localhost was no longer mapped to this specific webservice.

The solution for us was changing the code using Server.MapPath so the location of the file was filebased instead of webbased.

Copyright ©2008 Ferry Onderwater
Permalink |  Trackback

Comments (3)  
Re: Authentication failed because the remote party has closed the transport stream    By sangeet ahuja on 4-7-2008 7:09
i had the same problem.
my TCP and SSL ports were not set properly.
After correcting the same.
Things worked for me

Re: Authentication failed because the remote party has closed the transport stream    By Jeff on 9-7-2008 18:07
What do you mean by correcting the ports? Through code or server? Please help as we're having the exact same issue where http works but https doesn't.

Re: Authentication failed because the remote party has closed the transport stream    By shekib on 14-11-2008 22:52
Use port 443 (defualt for ssl) when connecting to a https url

  
 
Weblogs
    
Archief
    
Zoeken
    
 
 
 
 
Copyright 2006-2009 by Arcencus
Privacy Statement | Terms Of Use