传递参数时,.Net 4.0 WCF服务失败

时间:2010-12-01 16:40:13

标签: .net wcf .net-4.0

我正在尝试使用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
}

3 个答案:

答案 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服务完全相同,这就是为什么我认为它可能是相关的。

编辑:

值得快速阅读? http://support.microsoft.com/kb/958478

答案 2 :(得分:0)

错误来自应用程序的其他地方...... WCF错误不是最大的! :)