Получение исключения параметра безопасности при доступе к службе 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, но теперь, как очевидно, я не могу создать прокси на стороне клиента.

Пожалуйста, дайте мне знать, где я не прав?

1 ответ

Решение

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

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

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

Другие вопросы по тегам