Базовая аутентификация Wcf

Возникли проблемы с использованием базовой аутентификации с помощью простой тестовой службы Wcf. Я получаю исключение:

Запрошенная служба http: //qld-tgower/test/Service.svc не может быть активирована. Для получения дополнительной информации см. Журналы диагностической трассировки> сервера.

И в журнале трассировки это показывает:

Схемы аутентификации, настроенные на хосте («Базовая»), не позволяют использовать схемы, настроенные для привязки «BasicHttpBinding» («Анонимный»). Убедитесь, что для параметра SecurityMode установлено значение Transport или TransportCredentialOnly. Кроме того, это можно решить, изменив схемы аутентификации для этого приложения с помощью инструмента управления IIS, через свойство ServiceHost.Authentication.AuthenticationSchemes в файле конфигурации приложения в элементе , обновив свойство ClientCredentialType в привязке, или путем настройки свойства AuthenticationScheme в HttpTransportBindingElement.

Но что я не понимаю, когда я использую неправильное имя пользователя и пароль, он говорит, что IS использует базовую аутентификацию?

HTTP-запрос неавторизован со схемой аутентификации клиента «Базовая». Заголовок аутентификации, полученный от сервера, был «Basic realm =" qld-tgower "».

Это моя информация о web.config

<system.serviceModel>
<services>
  <service name="WcfService"
      behaviorConfiguration="Behavior">
    <endpoint address="http://QLD-TGOWER/test/Service.svc"
              binding="basicHttpBinding"
              bindingConfiguration="httpBinding"
              contract="IService" />
  </service>
</services>
<diagnostics>
  <endToEndTracing activityTracing="false" messageFlowTracing="true" propagateActivity="true"></endToEndTracing>
</diagnostics>
<bindings>
  <basicHttpBinding>
    <binding name="httpBinding">
      <security mode="TransportCredentialOnly">
        <transport  clientCredentialType="Basic" proxyCredentialType="Basic">
        </transport>
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
</system.serviceModel>

и мое приложение.config

<system.serviceModel>
    <diagnostics>
      <endToEndTracing activityTracing="true" />
      <messageLogging logMessagesAtTransportLevel="true" />
    </diagnostics>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IService" >
          <security mode="TransportCredentialOnly">

            <transport clientCredentialType="Basic" proxyCredentialType="Basic"></transport>
            <message clientCredentialType="UserName" />
          </security>

        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://QLD-TGOWER/test/Service.svc" binding="basicHttpBinding"
        bindingConfiguration="BasicHttpBinding_IService" contract="ServiceReference1.IService"
        name="BasicHttpBinding_IService" />
    </client>
</system.serviceModel>

мое тестовое приложение

private static void Main(string[] args)
{
    var proxy = new ServiceClient("BasicHttpBinding_IService");
    var clientCredentials = proxy.ClientCredentials;
    clientCredentials.UserName.UserName = "username";
    clientCredentials.UserName.Password = "password";
    var res = proxy.GetData(1);
    Console.WriteLine(res);
    Console.WriteLine("Done");
    Console.ReadKey(true);
}

И моя служба

public class Service : IService
{

   public string GetData(int value)
   {
       return string.Format("You entered: {0}", value);
   }
}

Что-то мне здесь не хватает?

20
задан TheRealTy 22 November 2011 в 00:40
поделиться