TheLearner TheLearner - 21 days ago 13
C# Question

System.IO.IOException: The handshake failed due to an unexpected > packet format?

Does anyone know what this means?


System.Net.WebException: The
underlying connection was closed: An
unexpected error occurred on a send.
---> System.IO.IOException: The handshake failed due to an unexpected
packet format. 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.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan
timeout) at


EDIT:

This is the method I was calling:


_productsService = new ProductsPortTypeClient();
_productsService.GetResortProducts(GetProductsCredentials(),
GetResortProductParams());

Answer

It looks like a problem with SSL authentication, it fails at handshake phase, maybe two implementations are not compatible, you may check the WSDL format of the response, figure out what format should be used for communication and check if the one sent by you complies with it (you may use any kind of a network monitor software, eg. Microsoft Network Monitor)