Получение исключения параметра безопасности при доступе к службе WCF - PullRequest
1 голос
/ 18 января 2011

Ниже приведены обязательные настройки моей службы 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 Ответ

1 голос
/ 18 января 2011

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

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

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

...