gpt4 book ai didi

c# - WinPhone WCF : ErrorObject parsing/EndInvoke() Error

转载 作者:行者123 更新时间:2023-11-30 18:42:03 37 4
gpt4 key购买 nike

在 WCF 的帮助下,我正在编写一个使用基于 SOAP 的 WebService 的 WindowsPhone 应用程序。我遇到了问题,解析的东西不能像它应该的那样工作。有生成类(Reference.cs),由visual studio根据服务的wsdl描述生成。如果我调用服务方法并且没有错误,一切都很好,请求已发送并且我得到了答复。但是如果出现问题,请求被发送并且服务器返回一个错误对象。此对象名为“ClientException”并由 wsdl 文件指定。现在的问题是代码获取(错误)返回值失败,无法返回异常。具体 base.EndInvoke() 失败。这似乎是一个 winphone/silverlight 问题,使用普通 wcf 客户端测试,服务和/或解析没有问题。

下面是一些代码来说明我的意思:

Reference.cs 中的代码

        public IAsyncResult BegingetCubeState(AsyncCallback callback, object asyncState)
{
object[] _args = new object[0];
IAsyncResult _result = base.BeginInvoke("getCubeState", _args, callback, asyncState);
return _result;
}

public CubeState EndgetCubeState(IAsyncResult result)
{
object[] _args = new object[0];
Debugger.Break();
CubeState _result = ((CubeState)(base.EndInvoke("getCubeState", _args, result)));
return _result;
}

base.EndInvoke("getMaxCubeState", _args, result) 失败

InvalidCastException
bei System.ServiceModel.Dispatcher.XmlSerializerObjectSerializer.ReadObject(XmlDictionaryReader reader, Boolean verifyObjectName)
bei System.Runtime.Serialization.XmlObjectSerializer.ReadObject(XmlReader reader, Boolean verifyObjectName)
bei System.Runtime.Serialization.XmlObjectSerializer.InternalReadObject(XmlReaderDelegator reader, Boolean verifyObjectName)
bei System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName)
bei System.Runtime.Serialization.XmlObjectSerializer.ReadObject(XmlDictionaryReader reader)
bei System.ServiceModel.Dispatcher.XmlSerializerFaultFormatter.CreateFaultException(MessageFault messageFault, String action)
bei System.ServiceModel.Dispatcher.FaultFormatter.Deserialize(MessageFault messageFault, String action)
bei System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
bei System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
bei System.ServiceModel.ClientBase1.ChannelBase1.EndInvoke(String methodName, Object[] args, IAsyncResult result)
bei WindowsPhoneStr.ServiceReferenceSoap.RemoteClient.RemoteClientChannel.EndgetCubeState(IAsyncResult result)
bei WindowsPhoneStr.ServiceReferenceSoap.RemoteClient.WindowsPhoneStr.ServiceReferenceSoap.IRemote.EndgetCubeState(IAsyncResult result)
bei WindowsPhoneStr.ServiceReferenceSoap.RemoteClient.OnEndgetCubeState(IAsyncResult result)
bei System.ServiceModel.ClientBase1.OnAsyncCallCompleted(IAsyncResult result)
bei System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously)
bei System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously, Exception exception)
bei System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.CallComplete(Boolean completedSynchronously, Exception exception)
bei System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.FinishSend(IAsyncResult result, Boolean completedSynchronously)
bei System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.SendCallback(IAsyncResult result)
bei System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously)
bei System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously, Exception exception)
bei System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.OnGetResponse(IAsyncResult result)
bei System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClassa.<InvokeGetResponseCallback>b__8(Object state2)
bei System.Threading.ThreadPool.WorkItem.doWork(Object o)
bei System.Threading.Timer.ring()

我希望我对问题的解释足够详细。是否有解决此问题的解决方案?

感谢您的宝贵时间!

最佳答案

快速浏览错误消息表明它是客户端的强制转换异常,因此尝试在客户端反序列化对象是不愉快的。

我看不到 wsdl,但看起来您的服务器和客户端对象定义不匹配。可能您更改了服务器上返回消息的元素,但没有刷新客户端。这也可以解释为什么它在您的测试项目中有效——您从它们那里获得了正确的服务引用数据,而您的实际项目有一个旧的服务定义。

您是否尝试过在客户端上刷新您的 WCF 服务信息? (右击客户端项目中的服务,点击“更新”)

关于c# - WinPhone WCF : ErrorObject parsing/EndInvoke() Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6097480/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com