使用 WCF Web 服务时获取 System.ServiceModel.ProtocolException
Posted
技术标签:
【中文标题】使用 WCF Web 服务时获取 System.ServiceModel.ProtocolException【英文标题】:Getting System.ServiceModel.ProtocolException while Consuming WCF Webservice 【发布时间】:2013-09-22 21:16:13 【问题描述】:我正在使用一个 WCF Web 服务,我在 Web 服务端无法控制它。
我提供了一个自动生成的 svc.cs 代理文件,我正在使用它。
其实我是在请求网络服务从客户端下载一些大数据。
有时我会得到
System.ServiceModel.ProtocolException
在我的客户端。
异常如下:
System.ServiceModel.ProtocolException:可用字节数 与 HTTP Content-Length 标头不一致。可能有 是网络错误或客户端可能发送无效请求。
服务器堆栈跟踪:在 System.ServiceModel.Channels.HttpInput.ReadBufferedMessage(流 输入流)在 System.ServiceModel.Channels.HttpInput.ParseIncomingMessage(异常& requestException) 在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(时间跨度 超时)在 System.ServiceModel.Channels.RequestChannel.Request(消息消息, TimeSpan 超时)在 System.ServiceModel.Dispatcher.RequestChannelBinder.Request(消息 消息,TimeSpan 超时)在 System.ServiceModel.Channels.ServiceChannel.Call(字符串动作, Boolean oneway, ProxyOperationRuntime 操作, Object[] ins, Object[] 出局,TimeSpan 超时)在 System.ServiceModel.Channels.ServiceChannel.Call(字符串动作, Boolean oneway, ProxyOperationRuntime 操作, Object[] ins, 对象 [] 出局)在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime 操作)在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage 留言)
在 [0] 处重新抛出异常:在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(消息数据& msgData,Int32 类型)在 IBulkDataSvc.GetEmployeesData(字符串 BusinessPath、DateTime EffectiveDate、String TerminalName)在 Empower.ServiceRequest.EmployeeDataXML(DateTime 时间,字符串终端) 在 Empower.Empower.DownloadEmployeeList(String terminalName)
我在客户端的 Web 服务绑定配置如下(仅显示绑定),
<bindings>
<basicHttpBinding>
<binding name="BulkDataSvcSoap">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" />
</security>
</binding>
<binding name="BulkDataSvcHttpsSoap">
<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>
</binding>
</basicHttpBinding>
<netTcpBinding>
<binding name="BulkDataSvcTcp">
<security mode="None" />
</binding>
</netTcpBinding>
</bindings>
我有点困惑它到底是从哪一端生成的,为什么生成?
我在谷歌上搜索过,但没有发现任何有用的东西。所以有人可以帮我解决这个难题 .
【问题讨论】:
您是否启用了登录 WCF 服务以进行分析。仅此一项就可以更好地了解您现在遇到的问题。分析日志文件可以帮助你。或者为我们发布 svclog 文件中的异常详细信息。 【参考方案1】:你有机会读到这个calling non wcf service
此外,在某些情况下,如果您的请求带来的数据大于 Web 服务端指定的数据,那么您一定会得到这个。
【讨论】:
以上是关于使用 WCF Web 服务时获取 System.ServiceModel.ProtocolException的主要内容,如果未能解决你的问题,请参考以下文章
将 WCF 服务添加为 Web 引用和服务引用时的不同代理类