У меня есть проблема в WCF, которая сводит меня с ума.Это:
Сообщение с действием 'GetUserByUserNameAndPassword' не может быть обработано в получателе из-за несоответствия ContractFilter в EndpointDispatcher.Это может быть связано либо с несоответствием контракта (несоответствующие действия между отправителем и получателем), либо с несоответствием привязки / безопасности между отправителем и получателем.Убедитесь, что отправитель и получатель имеют один и тот же контракт и одну и ту же привязку (включая требования безопасности, например, Сообщение, Транспорт, Нет).
Настройка выполняется следующим образом.У меня есть один веб-сервер с клиентским веб-сайтом в IIS 7, который пытается установить связь с помощью WCF с другим сервером, на котором установлен SQL Server и служба WCF, размещенная в IIS 7.
Обе эти машины находятся в одном домене.
Чтобы попытаться свести это на нет, я пытаюсь заставить это работать без какой-либо безопасности.Конфигурация клиента выглядит следующим образом:
<bindings>
<wsHttpBinding>
<binding name="wsHttpBinding_Normal">
<security mode="None"/>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://192.168.1.10:3026/DS.Service/AuditLogger.svc"
binding="wsHttpBinding" bindingConfiguration="wsHttpBinding_Normal"
contract="AuditLogger.IAuditLogger" name="wsHttpBinding_IAuditLogger">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
Тогда на сервере конфигурация выглядит следующим образом:
<bindings>
<wsHttpBinding>
<binding name="NormalTrafficBinding">
<security mode="None"/>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="DS.Service.ServiceImplementation.AuditLogger">
<endpoint address="http://192.168.1.10:3026/DS.Service/AuditLogger.svc"
binding="wsHttpBinding" bindingConfiguration="NormalTrafficBinding"
contract="DS.Service.ServiceContracts.IAuditLogger">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
<services>
Сам метод выглядит так:
[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "GetUserByUserNameAndPassword")]
[FaultContract(typeof(DS.Service.FaultContracts.DSOfficeFault))]
System.Data.DataSet GetUserByUserNameAndPassword(string userName, string password);