我正在尝试使用WCF测试客户端的basichttpbinding端点测试WCF服务。我可以测试我没有传递参数的方法没有问题,但是当我需要传递一个参数时,我得到以下错误:
无法调用该服务。可能 原因:服务处于脱机状态或 交通不便;客户端 配置不匹配 代理;现有代理无效。 有关更多信息,请参阅堆栈跟踪 详情。你可以尝试恢复 启动新代理,恢复到 默认配置或刷新 服务。
执行时出错 命令定义。看到内心 细节例外。
服务器堆栈跟踪:at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(消息 回复,MessageFault错误,字符串 动作,MessageVersion版本, FaultConverter faultConverter)at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime 操作,ProxyRpc& rpc)at System.ServiceModel.Channels.ServiceChannel.Call(字符串 动作,布尔单向, ProxyOperationRuntime操作, Object [] ins,Object [] outs,TimeSpan 超时)at System.ServiceModel.Channels.ServiceChannel.Call(字符串 动作,布尔单向, ProxyOperationRuntime操作, Object [] ins,Object [] out)at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime 操作) System.ServiceModel.Channels.ServiceChannelProxy.Invoke(即时聊天 消息)
在[0]处重新抛出异常:at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(即时聊天 reqMsg,IMessage retMsg)at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&安培; msgData,Int32类型)at IErouter.GetClientSearch(字符串 surname,String forename,String 街道,字符串邮政编码) ErouterClient.GetClientSearch(字符串 surname,String forename,String 街道,字符串邮政编码)
由于我可以调用无参数方法这个错误对我来说没有意义。
[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
}
答案 0 :(得分:1)
可能是序列化错误 - 检查返回类SelectClientSearch_Result中是否有[DataContract]或[Serializable]。
答案 1 :(得分:1)
尝试将以下内容添加到web.config中是值得的:
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="http://host:port"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
如果这不起作用,您可以尝试添加以上内容并删除元素:<host></host>
(来自我链接的上一个链接的想法)
将以下内容添加到web.config可能会有所帮助。
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
我读过的网站是:
http://msdn.microsoft.com/en-us/library/aa702682.aspx
http://msdn.microsoft.com/en-us/library/ms731336.aspx
http://community.discountasp.net/showthread.php?t=7719
有人提到WCF服务的行为与ASMX服务完全相同,这就是为什么我认为它可能是相关的。
编辑:
答案 2 :(得分:0)
错误来自应用程序的其他地方...... WCF错误不是最大的! :)