2013-07-16 6 views
0

Я боролся с этим уже пару дней. Я пытаюсь разместить службу WCF в IIS, поэтому наши другие веб-сайты могут получить доступ к данным, которые эта служба будет раскрывать. Написание кода было довольно простым, это конфигурация, которую я не могу получить правильно, независимо от того, что я пытаюсь сделать.Справка по настройке WCF - не может понять это правильно

То, что я пытаюсь достичь:

  1. Иметь службу за HTTP и HTTPS на HTTP (s): //service.motors.coop (Мы не имеем SSL сертификат еще)
  2. Уметь назвать по .net, PHP, IOS, Android и т.д. (хотя я уверен, что это не CONFIG основе)
  3. Тестовые методы путем доступа к ним через браузер, например 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.

+0

Попробуйте загрузить конфигурацию с UI - гораздо легче обнаружить проблемы. Откройте командную строку VS и напишите файл svcconfigeditor.exe. Проверьте эту ссылку: http://msdn.microsoft.com/en-us/library/ms732009.aspx. Затем вы можете загрузить конфигурацию, и она будет проверять конфигурацию для запуска. – Mez

+0

@StephenBorg Спасибо за ответ. Я как можно лучше прошел мастер, но у меня все еще есть сообщение «Сообщение с To» http://service.motors.coop/MotorsService.svc/ShowClientIp 'не может быть обработано в приемнике из-за несоответствия AddressFilter в EndpointDispatcher. Проверьте, согласны ли конечные адреса отправителя и получателя. ошибка. Я обновил свой пост с помощью новой конфигурации. Вы знаете, что может вызвать эту ошибку сейчас? – Brett

ответ

Смежные вопросы