【发布时间】:2011-05-18 14:52:39
【问题描述】:
我正在尝试使用来自 WCF 测试客户端的 basichttpbinding 端点来测试 WCF 服务。我可以毫无问题地测试不传递参数的方法,但是当我需要传递参数时,会出现以下错误:
调用服务失败。可能的 原因:服务离线或 无法访问;客户端 配置不匹配 代理;现有代理无效。 有关更多信息,请参阅堆栈跟踪 细节。您可以尝试通过以下方式恢复 启动一个新的代理,恢复到 默认配置,或者刷新 服务。
执行时发生错误 命令定义。见内 详情例外。
服务器堆栈跟踪:在 System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(消息 回复,MessageFault 故障,字符串 动作,MessageVersion 版本, 故障转换器故障转换器)在 System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime 操作,ProxyRpc& rpc) 在 System.ServiceModel.Channels.ServiceChannel.Call(字符串 动作,单向布尔值, ProxyOperationRuntime 操作, Object[] 输入,Object[] 输出,TimeSpan 超时)在 System.ServiceModel.Channels.ServiceChannel.Call(字符串 动作,单向布尔值, ProxyOperationRuntime 操作, Object[] 输入,Object[] 输出)在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage 方法调用、代理操作运行时 操作)在 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 类型)在 IErouter.GetClientSearch(字符串 姓,字符串 名字,字符串 街道,字符串邮政编码)在 ErouterClient.GetClientSearch(字符串 姓,字符串 名字,字符串 街道,字符串邮政编码)
由于我可以调用无参数方法,所以这个错误对我来说毫无意义。
[ServiceContract]
public interface IErouter
{
#region Client Search
[OperationContract]
SelectClientSearch_Result[] GetClientSearch(
string surname, string forename, string street, string postcode);
#endregion
#region Changes
[OperationContract]
ChangeForBlackBerry[] GetClientChanges(string blackberryPin);
[OperationContract]
bool AcceptChange(int changeId, string blackberryPin);
[OperationContract]
bool AcknowledgeChange(int changeId, string blackberryPin);
[OperationContract]
ChangeForBlackBerry[] GetManagerChangesForShiftType(string blackberryPin,
string date, int shiftTypeId);
[OperationContract]
ClientDetailChangeViewModel GetClientDetailChange(int changeId);
#endregion
#region Client Details
[OperationContract]
ClientDetailViewModel GetClientDetails(int clientId);
[OperationContract]
SelectUserLevel_Result GetUserLevel(string blackberryPin);
#endregion
#region Useful Contacts
[OperationContract]
SelectAdminCentreTelNo_Result[] GetAdminCentreTelNos();
[OperationContract]
string GetDutyEmail();
[OperationContract]
SelectDutyManager_Result[] GetDutyManagerTelNos();
[OperationContract]
string GetGhaHandyTelNo();
[OperationContract]
SelectHospitalNos_Result[] GetHospitalTelNos();
[OperationContract]
string GetICTTelNo();
[OperationContract]
string GetMAHMobileTelNo();
[OperationContract]
SelectMyManagerNo_Result[] GetMyManagerTelNo(string blackberryPin);
[OperationContract]
string GetNHSDirectTelNo();
[OperationContract]
string GetOOHEmail();
[OperationContract]
string GetOOHTelNo();
[OperationContract]
string GetOperationsEmail();
[OperationContract]
string GetOperationsTelNo();
[OperationContract]
string GetOtherHandyPersonTelNo();
[OperationContract]
SelectSWTelNos_Result[] GetSWTelNo();
#endregion
#region Gaurdian 24 Visit Monitoring
[OperationContract]
string StartVisitMonitoring(int clientId, int activityDuration,
string activityText, string blackberryPin);
[OperationContract]
string StopVisitMonitoring(int clientId, string activityId,
string blackberryPin);
#endregion
}
【问题讨论】:
-
您能发布您的服务和数据合同吗?
-
啊,我之前没看懂,但是看到“执行命令定义时出错”,你是不是碰巧在使用实体框架?
-
内部异常是什么?您是否在数据类(ClientDetailViewModel 和其他)上设置了 [DataContract] 属性
-
您是否尝试调用 GetHospitalTelNos() 或 GetOperationsTelNo()?
-
@littlechris 有内部异常吗?关于命令定义的消息意味着查询出错了,异常的位置使查询看起来像是在序列化期间执行的。