Я боролся с этим уже пару дней. Я пытаюсь разместить службу WCF в IIS, поэтому наши другие веб-сайты могут получить доступ к данным, которые эта служба будет раскрывать. Написание кода было довольно простым, это конфигурация, которую я не могу получить правильно, независимо от того, что я пытаюсь сделать.Справка по настройке WCF - не может понять это правильно
То, что я пытаюсь достичь:
- Иметь службу за HTTP и HTTPS на HTTP (s): //service.motors.coop (Мы не имеем SSL сертификат еще)
- Уметь назвать по .net, PHP, IOS, Android и т.д. (хотя я уверен, что это не CONFIG основе)
- Тестовые методы путем доступа к ним через браузер, например http://service.motors.coop/motorsservice.svc/ShowClientIp
Всякий раз, когда я пытаюсь получить доступ кя получаю следующее сообщение об ошибке:
The message with To ' http://service.motors.coop/MotorsService.svc/ShowClientIp ' cannot be processed at the receiver, due to an AddressFilter mismatch at the EndpointDispatcher. Check that the sender and receiver's EndpointAddresses agree.
Есть так много вариантов конфигурации я не знаю, с чего начать, хотя я прочитал бесчисленное количество статей и даже купил книгу - это слишком сложно!
Может ли любая душа помочь мне с моим конфигурационным файлом?
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<!-- removed -->
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<customErrors mode="Off"/>
<httpRuntime/>
</system.web>
<system.serviceModel>
<services>
<service behaviorConfiguration="ServiceBehaviour" name="MotorsWcfService.MotorsService">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="" name="MotorsServiceEndpoint" contract="MotorsWcfService.IMotorsService"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<bindings>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" httpsGetUrl="https://service.motors.coop/MotorsService"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="EndpointBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="false"/>
Update: После прохождения через мастера, чтобы создать свой конфиг теперь у меня есть этот файл:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="WebHttpEndPoint" defaultOutgoingResponseFormat="Json" />
</webHttpEndpoint>
</standardEndpoints>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceTypeBehaviors" >
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding" />
</basicHttpBinding>
<webHttpBinding>
<binding name="WebHttpBinding" />
</webHttpBinding>
</bindings>
<services>
<service name="MotorsWcfService.MotorsService" behaviorConfiguration="MyServiceTypeBehaviors" >
<endpoint address="http://service.motors.coop" binding="webHttpBinding"
bindingConfiguration="WebHttpBinding" contract="MotorsWcfService.IMotorsService" />
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
</system.serviceModel>
Однако, я все еще получаю эту ошибку:
The message with To ' http://service.motors.coop/MotorsService.svc/ShowClientIp ' cannot be processed at the receiver, due to an AddressFilter mismatch at the EndpointDispatcher. Check that the sender and receiver's EndpointAddresses agree.
Попробуйте загрузить конфигурацию с UI - гораздо легче обнаружить проблемы. Откройте командную строку VS и напишите файл svcconfigeditor.exe. Проверьте эту ссылку: http://msdn.microsoft.com/en-us/library/ms732009.aspx. Затем вы можете загрузить конфигурацию, и она будет проверять конфигурацию для запуска. – Mez
@StephenBorg Спасибо за ответ. Я как можно лучше прошел мастер, но у меня все еще есть сообщение «Сообщение с To» http://service.motors.coop/MotorsService.svc/ShowClientIp 'не может быть обработано в приемнике из-за несоответствия AddressFilter в EndpointDispatcher. Проверьте, согласны ли конечные адреса отправителя и получателя. ошибка. Я обновил свой пост с помощью новой конфигурации. Вы знаете, что может вызвать эту ошибку сейчас? – Brett