Я видел, как это спрашивали здесь и везде много раз, но я не могу понять это.
Вот что я хочу сделать. Мне нужно разместить службу WCF в IIS 6. Мне нужна безопасность имени пользователя/пароля, и я не хочу, чтобы они передавались незашифрованными, поэтому я использую HTTPS. У меня все это работает локально на моем IIS, но когда я приступаю к его развертыванию, я получаю ошибку «Анонимный доступ не включен». На моем локальном IIS анонимный доступ включен, на развернутом сервере - нет, и мы не хотим его включать. Проблема понятна. Решение для меня неочевидное....
Если я перехожу на страницу в IE или добавляю ссылку на службу из Visual Studio, я получаю эту ошибку после ввода имени пользователя/пароля. Итак, это показывает, что мой сертификат и HTTPS работают нормально, а имя пользователя и пароль верны. Вот соответствующие настройки из web.config:
<services>
<service name="SecureWcfTestsApplication.Service1">
<endpoint address=""
binding="wsHttpBinding"
bindingConfiguration ="Binding2"
contract="SecureWcfTestsApplication.IService1" />
</service>
</services>
<bindings>
<basicHttpBinding>
</basicHttpBinding>
<wsHttpBinding>
<binding name="Binding2">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="Windows" algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
</bindings>
Я использую wsHttpBinding, потому что мне не нравится basicHttpBinding с clientCredentialType, установленным на Windows. Сказав, что я бы предпочел использовать basicHttp, но он хочет, чтобы UserName был clientCredentialType, и я не уверен, в чем разница между UserName и безопасностью Windows.
Лучший
Луч