2013-12-02 6 views
0

Я создал службу WCF в VS2010, которая возвращает Json. Я также создал проект тестирования Nunit, который вызывает методы службы. Все работало хорошо при использовании встроенного веб-сервера VS2010. Затем я настроил службу для запуска в моем локальном IIS6.1. Я могу успешно довести до службы в браузере, как в http://localhost/PVSCService/WebData.svc, но я получаю известный:Конфигурация клиента WCF

Там не было конечной точкой прослушивания в http://localhost/PVSCService/WebData.svc, которые могли бы принять сообщение. Это часто вызвано неправильным адресом или действием SOAP. Дополнительную информацию см. В InnerException, если имеется.

Моя web.config службы:

<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <system.serviceModel> 
    <services> 
     <service name="PVSCWeb.Service.WebData"> 
     <endpoint name="jsonEP" 
        address="" 
        binding="webHttpBinding" 
        behaviorConfiguration="json" 
        contract="PVSCWeb.Service.IWebData"/> 
     </service> 
    </services>  
    <behaviors> 
     <endpointBehaviors> 
     <behavior name="json"> 
      <webHttp defaultOutgoingResponseFormat="Json"/> 
     </behavior> 
     </endpointBehaviors>  
     <serviceBehaviors> 
     <behavior> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
</configuration> 

и мой Nunit тестового проект app.config:

<configuration> 
    <system.serviceModel> 
     <bindings> 
     <wsHttpBinding> 
      <binding name="WSHttpBinding_IWebData" closeTimeout="00:01:00" 
       openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
       bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" 
       maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
       messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" 
       allowCookies="false"> 
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
       maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      <reliableSession ordered="true" inactivityTimeout="00:10:00" 
       enabled="false" /> 
      <security mode="Message"> 
       <transport clientCredentialType="Windows" proxyCredentialType="None" 
        realm="" /> 
       <message clientCredentialType="Windows" negotiateServiceCredential="true" 
        algorithmSuite="Default" establishSecurityContext="true" /> 
      </security> 
      </binding> 
     </wsHttpBinding> 
     </bindings> 
     <client> 
     <endpoint address="http://localhost/PVSCService/WebData.svc" 
      binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IWebData" 
      contract="ServiceReference1.IWebData" name="WSHttpBinding_IWebData"> 
      </endpoint> 
     </client> 
    </system.serviceModel> 
    <system.diagnostics> 
    <!-- This logging is great when WCF does not work. --> 
    <sources> 
     <source propagateActivity="true" name="System.ServiceModel" switchValue="Error, ActivityTracing"> 
     <listeners> 
      <add name="AppFabricTracing" /> 
     </listeners> 
     </source> 
    </sources> 
    <trace autoflush="true" /> 
    <sharedListeners> 
     <add name="AppFabricTracing" initializeData="c:\PVSCService.svclog" type="System.Diagnostics.XmlWriterTraceListener" /> 
    </sharedListeners> 
    </system.diagnostics> 
</configuration> 

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

<endpoint name="jsonEP" 
      address="http://localhost/PVSCService/WebData.svc" 
      binding="webHttpBinding" 
      behaviorConfiguration="json" 
      contract="PVSCWeb.Service.IWebData"/> 

Но это создает еще одну ошибку в отношении нескольких привязок сайтов. Похоже, я пропускаю что-то простое, но критическое. Спасибо заранее, любая помощь очень ценится.

+0

Можете ли вы показать нам содержимое файла 'WebData.svc'? –

ответ

0

Хорошо, ваш сервис WCF использует webHttpBinding, который используется для служб REST.

Однако ваш NUnit конфигурации использует wsHttpBinding, который здесь не так - это SOAP связывания и это НЕ совместимы с webHttpBinding. Вам нужно изменить конфигурацию NUnit, чтобы использовать также webHttpBinding

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