2013-08-26 6 views
5

У меня есть служба wcf, которая будет работать только после развертывания ее на сервере и настройки через IIS. сообщение об ошибке там я получаю при запуске его через экспресс IIS является:Не удается запустить службу WCF на локальной машине

The authentication schemes configured on the host ('Ntlm, Anonymous') do not allow those configured on the binding 'BasicHttpBinding' ('Negotiate'). Please ensure that the SecurityMode is set to Transport or TransportCredentialOnly. Additionally, this may be resolved by changing the authentication schemes for this application through the IIS management tool, through the ServiceHost.Authentication.AuthenticationSchemes property, in the application configuration file at the element, by updating the ClientCredentialType property on the binding, or by adjusting the AuthenticationScheme property on the HttpTransportBindingElement.

Мой web.config услуги разбрасывать деньги налево выглядит следующим образом:

<services> 
     <service name="LMS.Services.Services.AppService" behaviorConfiguration="LargeDataRequestBehavior"> 
     <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttp_LargeDataRequestBinding" contract="LMS.Services.Services.AppService" /> 
     <endpoint address="mex" binding="basicHttpBinding" bindingConfiguration="basicHttp_LargeDataRequestBinding" contract="IMetadataExchange" /> 
     </service> </services> 

и мои привязки выглядит следующим образом:

<bindings> 
     <basicHttpBinding> 
     <binding name="basicHttp_LargeDataRequestBinding" receiveTimeout="01:00:00" sendTimeout="01:00:00" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text"> 
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />   
      <security mode="TransportCredentialOnly"> 
      <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" >    
      </transport> 
      <message clientCredentialType="UserName" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     <basicHttpBinding> 
    </bindings> 

Любая помощь будет принята с благодарностью.

ответ

7

Попробуйте изменить эту часть. Проблема в том, что перечисление для типа учетных данных Windows сопоставляется с протоколом Negotiate. IIS информирует вас о том, что Negotiate не включен на вашем веб-сайте, разрешены только базовые (без обеспечения) и Ntlm (другая форма безопасности Windows).

<bindings> 
    <basicHttpBinding> 
    <binding>  
     <security > 
     <transport clientCredentialType="Ntlm" >    
     </transport> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

ВТФ здесь является то, что существует несоответствие между «Согласование» и «Windows».

+0

Это было заставить его работать, но вызвало еще один вопрос о созыве стороннего прокси-сервера для пакета silverlight. Я получаю эту ошибку: сообщение с действием «urn: AppService/GetTemplatesByCategory» не может быть обработано в приемнике из-за несоответствия ContractFilter в EndpointDispatcher. Это может быть из-за несоответствия контракта (несоответствие действий между отправителем и получателем) или несоответствия привязки/безопасности между отправителем и получателем. Убедитесь, что отправитель и получатель имеют один и тот же контракт и одну и ту же привязку (в том числе требования безопасности, например Message, Transport, None – greektreat

+0

никогда не комментируют мой последний комментарий, я по ошибке менял URL-адрес сервиса в моем клиенте! – greektreat

+0

Привет, Арон. '/' в закрывающем теге basicHttpBinding. Опечатка заставляет XML быть недопустимым. SO не позволит мне делать односимвольное редактирование, иначе я просто исправлю его самостоятельно. –

1

Обновление IIS Authentication настройки, как показано ниже фиксированных это в моем случае:

  • Anonymous Authentication: Disabled
  • Проверка подлинности Windows: Enabled
Смежные вопросы