Подтвердить что ты не робот

Проверка WebServiceHostFactory и IIS

У меня возникла проблема с использованием WebServiceHostFactory в IIS.

"IIS задали схемы аутентификации" IntegratedWindowsAuthentication, Anonymous ", но привязка поддерживает только одну схему аутентификации. Допустимые схемы аутентификации - это дайджест, переговоры, NTLM, Basic или Anonymous. Измените параметры IIS, чтобы только один используется схема аутентификации.

Я хотел сохранить обе схемы аутентификации и смог это сделать, не используя factory, а настраивая конечную точку вручную в web.config.

Мой вопрос: что делает WebServiceHostFactory для получения этого результата? У меня создалось впечатление, что WebServiceHostFactory установит привязку к тому же webHttpBinding, что и в моей конфигурации.

Изменить: Я смотрел на WebServiceHostFactory в отражателе, и он не делает ничего умного. Это просто простой factory для WebServiceHost.

Использует ли IIS хост службы, если вы настраиваете конечную точку в config? Или настройка WebServiceHost по-разному.

4b9b3361

Ответ 1

Это то, что сработало для меня. Добавление фиктивной конечной точки на раннем этапе (до открытия хоста службы), как показано ниже, похоже, сделало трюк. (Эта статья MSDN намекала на это http://msdn.microsoft.com/en-us/library/bb412178.aspx.)

public class MyWebServiceHost : WebServiceHost
{
    public MyWebServiceHost (Type serviceType, params Uri[] baseAddresses) : base(serviceType, baseAddresses)
    {
        // Inserting this dummy endpoint config seemingly does the trick:
        AddServiceEndpoint(typeof(IMyContract), new WebHttpBinding(), string.Empty);
    }

    protected override void ApplyConfiguration()
    {
        // Typical programmatic configuration here per:
        // http://msdn.microsoft.com/en-us/library/aa395224.aspx
    }
}

Я предполагаю, что это не позволяет WebServiceHost создавать конечную точку по умолчанию и, таким образом, отключает кучу функциональности.

Ответ 2

Я не уверен в WebServiceHostFactory, но похоже, что у вас есть служба внутри IIS, и у нее было выбрано несколько методов проверки подлинности. Если у вас есть IIS 5 или 6, попробуйте войти в IIS и просмотрите свойства веб-сайта или виртуального каталога, содержащего вашу службу. Перейдите на вкладку "Безопасность каталога", нажмите кнопку "Редактировать" в разделе "Анонимный контроль доступа и проверки подлинности", а затем отмените отметку "Анонимный доступ" или "Интегрированная проверка подлинности Windows". Я не уверен в IIS7.

Ответ 3

В IIS7 вы можете не найти, где вы можете управлять параметром "Интегрированная проверка подлинности Windows". Чтобы увидеть настройку в консоли управления IIS7, вам необходимо выполнить шаги, описанные в следующей статье: http://msdn.microsoft.com/en-us/library/x8a5axew.aspx (озаглавлен как "Ошибка: Отладка завершилась неудачей, поскольку встроенная проверка подлинности Windows не включена", если ссылка не работает).

Надеюсь, что это поможет.

Ответ 4

отключить защиту в теге конфигурации web.config- >

  <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding>
          <security mode="None">
            <transport clientCredentialType="Windows"/>
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
  </system.serviceModel>

то ваша служба wcf не нуждается в аутентификации...