System.IO.IOException:由于意外>握手失败包格式?

时间:2011-03-03 09:21:56

标签: c# wcf

有谁知道这意味着什么?

  

System.Net.WebException:The   基础连接已关闭:An   发送时发生意外错误。   ---> System.IO.IOException:由于意外而导致握手失败   包格式。在   System.Net.Security.SslState.StartReadFrame(字节[]   buffer,Int32 readBytes,   AsyncProtocolRequest asyncRequest)at   System.Net.Security.SslState.StartReceiveBlob(字节[]   buffer,AsyncProtocolRequest   asyncRequest)at   System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken   消息,AsyncProtocolRequest   asyncRequest)at   System.Net.Security.SslState.StartSendBlob(字节[]   传入,Int32计数,   AsyncProtocolRequest asyncRequest)at   System.Net.Security.SslState.ForceAuthentication(布尔   receiveFirst,Byte [] buffer,   AsyncProtocolRequest asyncRequest)at   System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult   lazyResult)at   System.Net.TlsStream.CallProcessAuthentication(对象   国家)   System.Threading.ExecutionContext.runTryCode(对象   userData)at   System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode   代码,CleanupCode backoutCode,Object   userData)at   System.Threading.ExecutionContext.RunInternal(执行上下文   executionContext,ContextCallback   回调,对象状态)at   System.Threading.ExecutionContext.Run(执行上下文   executionContext,ContextCallback   回调,对象状态)at   System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult   结果)在   System.Net.TlsStream.Write(字节[]   缓冲区,Int32偏移量,Int32大小)at   System.Net.PooledStream.Write(字节[]   缓冲区,Int32偏移量,Int32大小)at   System.Net.ConnectStream.WriteHeaders(布尔   异步)---内部异常结束   堆栈跟踪--- at   System.Net.HttpWebRequest.GetResponse()   在   System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(时间跨度   

修改

这是我打电话的方法:

  

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

4 个答案:

答案 0 :(得分:28)

看起来SSL验证有问题,它在握手阶段失败,可能两个实现不兼容,您可以检查响应的WSDL格式,找出应该用于通信的格式并检查是否发送了由您遵守它(您可以使用任何类型的网络监视器软件,例如Microsoft网络监视器)

答案 1 :(得分:3)

在我的情况下,它是Skype阻止443端口。转到Skype工具 - 高级连接并禁用"使用端口80& 443用于连接..."

答案 2 :(得分:2)

摘要:使用了错误的端口。

我的服务是在端口上运行的开发:58328但是下次我调试时它运行在端口:44315上,这导致了问题。 因此,将客户端端口更改为44315有助于解决问题!

答案 3 :(得分:1)

我只是想根据评论之一做出答案,因为它可能导致此错误发生。

在某些情况下,如果在调用BaseURL时有API,则将httphttps混合使用可能会出现问题。就我而言,这是在致电Google API时发生的。在某些情况下,这是一个简单的修复,任何人都可能发生。

希望有人帮忙。