WCF (.NET 4.0) + IIS 7 + Ошибка аутентификации Windows - «служба требует аутентификации Windows, но она не включена для приложения IIS» - PullRequest
3 голосов
/ 10 марта 2011

У нас есть простая служба WCF (в .NET 4.0), которая использует аутентификацию Windows, и она включена в функции аутентификации IIS 7.Это работает с одинаковыми настройками и одинаковой конфигурацией на двух серверах, но на одном из серверов возвращается с ошибкой Security settings for this service require Windows Authentication but it is not enabled for the IIS application that hosts this service. Я проверил все возможное в Интернете и перепробовал все варианты, такие как отключение других механизмов аутентификации и т. Д. Кажется, ничего не работает.Может ли кто-нибудь указать, в чем может быть проблема.Снова идентичные settigns на двух серверах отлично работают на третьем сервере, у него есть проблема.

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="ABCDbConnection" value="Data Source=xxx; Initial Catalog=sss;Integrated Security=True"/>
    <add key="MetadataDbConnection" value="Data Source=xxx; Initial Catalog=sss;Integrated Security=True"/>
    <add key="UsageEnabled" value="True"/>
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <protocolMapping>
      <add scheme="http" binding="basicHttpBinding" bindingConfiguration="WindowsBasicHttpBinding"/>
    </protocolMapping>
    <behaviors>
<serviceBehaviors>
    <behavior>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
          <dataContractSerializer maxItemsInObjectGraph="6553600"/>
    </behavior>
</serviceBehaviors>
</behaviors>
<bindings>
  <basicHttpBinding>
    <binding name="WindowsBasicHttpBinding">
      <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Windows"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

Вы пытались включить аутентификацию Windows через web.config, используя

<system.web>
       ....
    <authentication mode="Windows" /> 
       .....
</system.web>

Может существовать вероятность того, что один компьютер наследует этот параметр из родительского файла конфигурации, но не тот, который выдает ошибку.

Вы также можете убедиться, что анонимная аутентификация отключена, как на изображении ниже

enter image description here

2 голосов
/ 10 марта 2011

Работало ли какое-либо из решений в этой теме?

http://social.msdn.microsoft.com/Forums/en/wcf/thread/021babc6-2009-4ed9-81f4-ac48cc300c94

Из этого сообщения в блоге , он упомянул эту статью KB .

Если эта ошибка возвращается и Windows Аутентификация была включена в IIS, это означает, что есть проблема с поддерживаемая сетевая аутентификация схемы для веб-сайта, что в Интернете Сервис установлен под. Большинство вероятная причина в том, что он настроен только для NTLM. Мы хотим указать NTLM и вести переговоры.

...