none
未处理 System.ServiceModel.CommunicationException RRS feed

  • 问题

  • 引用 WEB服务一下代码

    Dim api As StreamsterApi = New StreamsterApi

    Dim o As Order = New Order

    o.Instrument = "EUR/USD"
    o.Desk = "Virtual Forex"
    o.Quantity = 10
    o.QuantitySpecified = True

    api.SendOrder(o)

    api.SendOrder(o)

    代码出错!

    错误提示如下

    这个是错误提示什么意思怎么读不明白怎么解决哪!

    未处理 System.ServiceModel.CommunicationException
      Message=反序列化操作“SendOrder”的响应消息的正文时出现错误。所需的命名空间“http://schemas.xmlsoap.org/soap/envelope/”中的结尾元素“Body”。找到 命名空间“http://www.novativa.com/ws/streamsterapi”中的元素“result”。 行 1,位置 190。
      Source=mscorlib
      StackTrace:
        Server stack trace:
           在 System.ServiceModel.Dispatcher.OperationFormatter.DeserializeReply(Message message, Object[] parameters)
           在 System.ServiceModel.Dispatcher.ProxyOperationRuntime.AfterReply(ProxyRpc& rpc)
           在 System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
           在 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
           在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
           在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
        Exception rethrown at [0]:
           在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
           在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
           在 ConsoleApplication1.streamsterapi.StreamsterApiInterface.SendOrder(SendOrderRequest request)
           在 ConsoleApplication1.streamsterapi.StreamsterApiInterfaceClient.streamsterapi_StreamsterApiInterface_SendOrder(SendOrderRequest request) 位置 C:\Documents and Settings\Administrator\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Service References\streamsterapi\Reference.vb:行号 2122
           在 ConsoleApplication1.streamsterapi.StreamsterApiInterfaceClient.SendOrder(Order Order) 位置 C:\Documents and Settings\Administrator\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Service References\streamsterapi\Reference.vb:行号 2128
           在 ConsoleApplication1.Module1.Main() 位置 C:\Documents and Settings\Administrator\Local Settings\Application Data\Temporary Projects\ConsoleApplication1\Module1.vb:行号 15
           在 System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
           在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
           在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
           在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
           在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           在 System.Threading.ThreadHelper.ThreadStart()
      InnerException: System.Xml.XmlException
           LineNumber=0
           LinePosition=0
           Message=所需的命名空间“http://schemas.xmlsoap.org/soap/envelope/”中的结尾元素“Body”。找到 命名空间“http://www.novativa.com/ws/streamsterapi”中的元素“result”。 行 1,位置 190。
           Source=System.Runtime.Serialization
           StackTrace:
                在 System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3)
                在 System.Xml.XmlBaseReader.ReadEndElement()
                在 System.ServiceModel.Channels.Message.ReadFromBodyContentsToEnd(XmlDictionaryReader reader, EnvelopeVersion envelopeVersion)
                在 System.ServiceModel.Channels.Message.ReadFromBodyContentsToEnd(XmlDictionaryReader reader)
                在 System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest)
                在 System.ServiceModel.Dispatcher.OperationFormatter.DeserializeReply(Message message, Object[] parameters)
           InnerException:

    2011年5月4日 11:14

答案

  • 你这个是通过 客户端代理 来调用WCF服务?

    问个问题,

    你有修改消息的命名空间吗?

    这里提到个东西。

    http://www.novativa.com/ws/streamsterapi”


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    • 已标记为答案 dazles 2011年8月14日 2:23
    2011年5月6日 1:47
    版主
  • 重新命名空间后还是出现那个问题

     

    • 已标记为答案 dazles 2011年8月14日 2:23
    2011年5月7日 1:50
  • 我之前好像遇到这样的问题了,是客户端生成的代理类和服务端的类不一致引起的,建议重新整理一下服务端,并重新引用服务。
    你随时可以开始!
    • 已标记为答案 dazles 2011年8月14日 2:23
    2011年5月7日 15:06
    版主
  • 看起来是客户端和服务端契约不一致,更新一下客户端吧。
    快乐在于能够长时间的为自己认为值得的事情努力工作,不管它是什么。
    • 已标记为答案 dazles 2011年8月14日 2:23
    2011年5月9日 15:02
  • 一般来说,你调用的web service不是用WCF技术构建的,最大可能是java的。

    你可以使用Fiddler抓取响应包,查看其架构,然后通过编写客户端而非通过服务引用自动生成的方式来

    保证和服务端的定义一致,。

    • 已标记为答案 dazles 2011年8月14日 2:23
    2011年5月10日 2:09
  • 手写代理类?会相当麻烦的,而且容易出现错误。建议是联系服务提供商,两边协调更新服务引用。
    你随时可以开始!
    • 已标记为答案 dazles 2011年8月14日 2:23
    2011年5月10日 2:15
    版主
  • Hi,

    1, 必须保证消息的命名空间一致。
    2,检查服务端数据契约与客户端生成的代理类是否一致。
    3,通过Fiddler或WcfTestClient.exe(服务是WCF Service)查看请求与响应消息。

    还有SendOrder方法的参数及返回值类型是可序列化的


    Please mark the replies as answers if they help or unmark if not. If you have any feedback about my replies, please contact msdnmg@microsoft.com Microsoft One Code Framework
    • 已标记为答案 dazles 2011年8月14日 2:23
    2011年5月26日 5:13
    版主

全部回复

  • 你这个是通过 客户端代理 来调用WCF服务?

    问个问题,

    你有修改消息的命名空间吗?

    这里提到个东西。

    http://www.novativa.com/ws/streamsterapi”


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    • 已标记为答案 dazles 2011年8月14日 2:23
    2011年5月6日 1:47
    版主
  • 没有修改过 命名空间  WEB 服务 配置文件时自动生成的

    2011年5月6日 2:25
  • 重新命名空间后还是出现那个问题

     

    • 已标记为答案 dazles 2011年8月14日 2:23
    2011年5月7日 1:50
  • 我之前好像遇到这样的问题了,是客户端生成的代理类和服务端的类不一致引起的,建议重新整理一下服务端,并重新引用服务。
    你随时可以开始!
    • 已标记为答案 dazles 2011年8月14日 2:23
    2011年5月7日 15:06
    版主
  • 这是一个外汇软件SOAP接口 服务端 是软件自动生成的不能修改  !

    2011年5月8日 1:52
  • 看起来是客户端和服务端契约不一致,更新一下客户端吧。
    快乐在于能够长时间的为自己认为值得的事情努力工作,不管它是什么。
    • 已标记为答案 dazles 2011年8月14日 2:23
    2011年5月9日 15:02
  • 一般来说,你调用的web service不是用WCF技术构建的,最大可能是java的。

    你可以使用Fiddler抓取响应包,查看其架构,然后通过编写客户端而非通过服务引用自动生成的方式来

    保证和服务端的定义一致,。

    • 已标记为答案 dazles 2011年8月14日 2:23
    2011年5月10日 2:09
  • 手写代理类?会相当麻烦的,而且容易出现错误。建议是联系服务提供商,两边协调更新服务引用。
    你随时可以开始!
    • 已标记为答案 dazles 2011年8月14日 2:23
    2011年5月10日 2:15
    版主
  • Hi,

    1, 必须保证消息的命名空间一致。
    2,检查服务端数据契约与客户端生成的代理类是否一致。
    3,通过Fiddler或WcfTestClient.exe(服务是WCF Service)查看请求与响应消息。

    还有SendOrder方法的参数及返回值类型是可序列化的


    Please mark the replies as answers if they help or unmark if not. If you have any feedback about my replies, please contact msdnmg@microsoft.com Microsoft One Code Framework
    • 已标记为答案 dazles 2011年8月14日 2:23
    2011年5月26日 5:13
    版主