Я хочу создать WCF-сервис, размещенный в IIS6, и отключить анонимную аутентификацию в IIS. И не используйте SSL.
Так что единственный способ, которым я располагаю, - использовать basicHttpBinging с TransportCredentialOnly
, его не?
Я создаю виртуальный каталог, устанавливаю Windows Integrated Auth и снимите флажок "Включить анонимный доступ".
Здесь мой 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 который размещает эту службу.
Я понятия не имею, почему мой сервис требует анонимного auth? Почему?