Я хочу создать WCF-сервис, размещенный в IIS6, и отключить анонимную аутентификацию в IIS. И не используйте SSL.
Таким образом, у меня есть только один способ - использовать basicHttpBinging с TransportCredentialOnly
, не так ли?
Я создаю виртуальный каталог, устанавливаю встроенную аутентификацию Windows и снимаю флажок «Включить анонимный доступ».
Вот мой web.config:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="MyBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="Samples.ServiceFacadeService" behaviorConfiguration="ServiceFacadeServiceBehavior">
<endpoint address="" binding="basicHttpBinding" bindingName="MyBinding"
contract="Samples.IServiceFacadeService">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceFacadeServiceBehavior">
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Вы видите, что я даже не включил MEX-enpoint для обмена метаданными. Только одна конечная точка и одна привязка для нее с безопасностью TransportCredentialOnly.
Но когда я пытаюсь запустить службу (вызывая метод через клиентский прокси), я получаю такое исключение в EventLog:
Исключение:
System.ServiceModel.ServiceActivationException:
Сервис
'/Wcftest/ServiceFacadeService.svc'
не может быть активирован из-за
исключение во время компиляции.
сообщение об исключении: Безопасность
настройки для этого сервиса требуют
«Анонимная» аутентификация, но она
не включен для приложения IIS
где находится этот сервис .. --->
System.NotSupportedException: безопасность
настройки для этого сервиса требуют
«Анонимная» аутентификация, но она
не включен для приложения IIS
где размещен этот сервис.
Понятия не имею, почему мой сервис требует анонимной аутентификации? Почему?