WebServiceHostFactory и IIS-аутентификация - PullRequest
11 голосов
/ 22 февраля 2009

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

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

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

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

Edit: Я посмотрел на WebServiceHostFactory в отражателе, и он не делает ничего умного. Это просто простая фабрика для WebServiceHost.

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

Ответы [ 4 ]

3 голосов
/ 08 июня 2011

Вот что у меня сработало. Раннее добавление фиктивной конечной точки (до открытия хоста службы), как показано ниже, похоже, помогло. (Эта статья 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 создать конечную точку по умолчанию и, таким образом, отключить множество функций.

1 голос
/ 22 ноября 2009

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

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

1 голос
/ 19 июня 2009

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

0 голосов
/ 17 февраля 2013

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...