2011-01-18 1 views
1

Ниже приведены конфигурации привязки моей службы WCF.Получение исключения настройки безопасности при доступе к службе WCF

  • Анонимный доступ: от
  • Базовая аутентификация: на
  • Встроенная проверка подлинности Windows: отключено !!

Поддержка протокола HTTP.

Я получаю следующее исключение при обращении к моей службе WCF:

Параметры безопасности для этой службы требуют проверок подлинности «анонимных», но она не включена для приложения IIS, на котором размещена эту службу.

<system.serviceModel> 

    <bindings> 

      <basicHttpBinding> 

       <binding name="MyBinding"> 

         <security mode="TransportCredentialOnly">       

          <transport clientCredentialType ="Basic" /> 

         </security> 

       </binding> 

      </basicHttpBinding> 

    </bindings> 

<services> 

     <service behaviorConfiguration="WMWcfWebServiceLib.Service1Behavior" 

      name="WMWcfWebServiceLib.WMWcfWebService"> 

       <endpoint address="" binding="basicHttpBinding" bindingConfiguration="MyBinding" 

       contract="WMWcfWebServiceLib.IWMWebService">      



       </endpoint> 

       <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 

       <host> 

        <baseAddresses> 

          <add baseAddress="http://localhost:8731/Design_Time_Addresses/WMWcfWebServiceLib/Service1/" /> 

        </baseAddresses> 

       </host> 

     </service> 

    </services> 

<behaviors> 

    <serviceBehaviors> 

    <behavior name="WMWcfWebServiceLib.Service1Behavior"> 

     <!-- 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="False" /> 

    </behavior> 

    </serviceBehaviors> 

</behaviors> 

Пожалуйста, помогите !!

Редактировать

Я могу получить доступ к службе WCF через веб-браузер со следующими изменениями:

Изменение режима безопасности на TransportCredentialOnly и Удалены Mex конечных точек, , но теперь, как очевидно, I я не могу создать прокси-сервер на стороне клиента.

Пожалуйста, дайте мне знать, где я ошибаюсь.

+0

Является ли служба размещенной в IIS? –

+0

Да, его IIS 5.1 –

+0

Как вы получаете доступ к сервису? Если ваша конфигурация используется, она должна поддерживать только HTTPS. –

ответ

1

Если вы хотите поддерживать HTTP только ваша конфигурация не используется вообще, потому что mode="Transport" требует HTTPS. Сначала найдите, почему config не используется (возможно, неправильное имя типа в элементе службы). Затем измените режим безопасности на TransportCredentialOnly. Но имейте в виду, что TransportCredentialOnly + Обычная проверка подлинности означает, что HTTP-запросы будут содержать текстовое имя и пароль пользователя Windows. В большинстве случаев такая реализация не будет проходить никакой проверки безопасности.

Edit:

Вы можете создать прокси-сервер без MEX конечной точки, если вы по-прежнему поддерживать httpGetEnabled в поведении метаданных службы.

+0

Я сделал вышеупомянутые изменения. например, установить режим TansportCredentialOnly, и я использую обычную проверку подлинности. Флаг httpGetEnable имеет значение True. Но все же я не могу получить доступ к сервису. Однако, если я удалю конечную точку Mex, WCF-сервис будет доступен, но я не смогу разоблачить метаданные, и, следовательно, клиент не сможет создать прокси-сервер !! Мне интересно, какой вариант позволяет только получать метаданные через HTTP. –

+0

Если у вас есть httpGetEnabled, вы можете написать WMWebService.svc? Wsdl, и вы получите метаданные. –

+0

Есть ли способ, посредством которого моя служба wcf обнаруживает метаданные, не удаляя конечную точку mex с той же или любой другой конфигурацией? –