Я сталкиваюсь с очень странной проблемой здесь, ребята. Для простоты я создал проект с единственной целью тестирования проблемы вне рамок более крупного приложения и все еще сталкивался с тем, что является либо ошибкой в WCF в Visual Studio 2010, либо чем-то связанным с моим набором навыков для новичка WCF:)
Вот вопрос:
У меня есть конечная точка WCF, которую я создал внутри проекта MVC3 под названием «SimpleMethod». Метод запускается внутри файла .svc в корне приложения и возвращает bool.
Используя «Редактор конфигурации службы WCF», я добавил конечную точку в свой Web.Config вместе с так называемым «LargeImageBinding».
Вот услуга:
[OperationContract]
public bool SimpleMethod()
{
return true;
}
И Web.Config, сгенерированный инструментом Config:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="LargeImageBinding" closeTimeout="00:10:00" />
</wsHttpBinding>
</bindings>
<services>
<service name="WCFEndpoints.ServiceTestOne">
<endpoint address="/ServiceTestOne.svc" binding="wsHttpBinding"
bindingConfiguration="LargeImageBinding" contract="WCFEndpoints.IServiceTestOne" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
Служба работает нормально, и вы можете увидеть конечную точку при переходе к: http://localhost:57364/ServiceTestOne.svc - Теперь проблема возникает, когда я создаю отдельный проект для использования службы. Я добавляю сервисную ссылку к работающему экземпляру вышеуказанного проекта, указываю на: http://localhost:57364/ServiceTestOne.svc
Вот странная часть. Служба автоматически генерирует просто отлично, но в Web.Config генерируемая конечная точка выглядит следующим образом:
<client>
<endpoint address="http://localhost:57364/ServiceTestOne.svc/ServiceTestOne.svc"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IServiceTestOne"
contract="ServiceTestOne.IServiceTestOne" name="WSHttpBinding_IServiceTestOne">
Как вы видите, в нем дважды указывается часть адреса "ServiceTestOne.svc"!
Когда я звоню в сервис, я получаю следующую ошибку:
Удаленный сервер возвратил ошибку: (404) Not Found.
Я попытался удалить лишний "/ServiceTestOne.svc" в конце адреса конечной точки в вышеуказанном конфиге, и я получаю точно такую же ошибку.
Теперь работает, если я возвращаюсь в приложение WCF и удаляю пользовательскую конечную точку и ссылки привязки в Web.Config (все в тегах «services» и «bindings»), затем возвращаюсь к приложению-потребителю, обновите ссылку на сервис и сделайте вызов SimpleMethod () .... BOOM работает как чудо, и я возвращаю bool, установленный в true.
Дело в том, что мне нужно настроить пользовательские привязки, чтобы разрешить доступ к службе за пределами значений по умолчанию, и, насколько я могу судить, любая попытка создать пользовательские привязки приводит к тому, что конечные точки работают нормально, но Ошибка при фактическом вызове метода.
Может ли кто-нибудь увидеть какой-либо недостаток в том, как я это собираю? Спасибо за то, что уделили мне время - я бегал по кругу с этим около недели!