Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

c#

wcf

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());

like image 240
TheLearner Avatar asked Mar 03 '11 09:03

TheLearner


4 Answers

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)

like image 143
Tobiasz Avatar answered Nov 14 '22 00:11

Tobiasz


I just wanted to make an answer based on one of the comments because it can cause this error to happen.

In some cases, if you have a BaseURL while calling a API, then the problem could happen if you mixed up http and https. This happened in my case while calling a Google API. This is a simple fix in some cases and can happen to anyone.

Hope this help's someone out.

like image 33
Rahul Sharma Avatar answered Nov 13 '22 23:11

Rahul Sharma


In my case it was Skype blocking 443 port. Go to Skype tools-advanced-connections and disable "Use port 80 & 443 for connections..."

like image 7
Ludwo Avatar answered Nov 14 '22 00:11

Ludwo


summary: wrong port was used.

My service was running in development on port :58328 but next time I debugged it was running on port :44315, and this caused the issue. So changing the port on the client side to 44315 helped to resolve the issue!

like image 4
juFo Avatar answered Nov 14 '22 01:11

juFo