.NET 4.0 WCF Service не работает при передаче параметров - PullRequest
3 голосов
/ 01 декабря 2010

Я пытаюсь протестировать службу WCF с использованием конечной точки basichttpbinding из тестового клиента WCF. Я могу протестировать методы, в которые не передаю параметры, без проблем, но когда мне нужно передать параметр, я получаю следующую ошибку:

Не удалось вызвать службу. Возможный причины: служба не работает или недоступный; на стороне клиента конфигурация не соответствует прокси; существующий прокси-сервер недействителен. Обратитесь к трассировке стека для более подробно. Вы можете попытаться восстановить путем запуск нового прокси, восстановление конфигурация по умолчанию или обновление услуга.

Произошла ошибка при выполнении определение команды. Увидеть внутренний исключение для деталей.

Трассировка стека сервера: в System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood (Message ответ, ошибка MessageFault, строка действие, версия MessageVersion, FaultConverter FailConverter) в System.ServiceModel.Channels.ServiceChannel.HandleReply (ProxyOperationRuntime операция, ProxyRpc & rpc) в System.ServiceModel.Channels.ServiceChannel.Call (String действие, логическое одностороннее, Операция ProxyOperationRuntime, Object [] ins, Object [] outs, TimeSpan тайм-аут) в System.ServiceModel.Channels.ServiceChannel.Call (String действие, логическое одностороннее, Операция ProxyOperationRuntime, Object [] ins, Object [] outs) в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall, ProxyOperationRuntime операция) в System.ServiceModel.Channels.ServiceChannelProxy.Invoke (Шеззаде сообщение)

Исключение переброшено в [0]: в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (Шеззаде reqMsg, IMessage retMsg) в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & msgData, тип Int32) в IErouter.GetClientSearch (String фамилия, строка имя, строка улица, почтовый индекс) в ErouterClient.GetClientSearch (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 ]

1 голос
/ 02 декабря 2010

Возможно, стоит попытаться добавить в файл 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

1 голос
/ 01 декабря 2010

Это может быть ошибка сериализации - проверьте, есть ли у вас [DataContract] или [Serializable] в классе возврата SelectClientSearch_Result.

0 голосов
/ 07 декабря 2010

Ошибка пришла из другого места в приложении ... Ошибки WCF не самые большие!:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...