Ошибки WCF 403 - PullRequest
       24

Ошибки WCF 403

2 голосов
/ 11 мая 2009

Я получаю разные ошибки с сервисом WCF. До сих пор этот сервис отлично работал во всех наших тестовых средах. Обычно у нас он работает под IIS 6 на Windows Server 2003. У меня он работал под виртуальной машиной Windows XP Pro, которая была подключена к домену нашей компании. Наш ИТ-специалист недавно удалил виртуальную машину из домена компании.

Теперь я получаю такие ошибки:

Существующее соединение было принудительно закрыто удаленным хостом.

Удаленный сервер вернул ошибку: (403) Запрещено.

HTTP-запрос был запрещен с схема аутентификации клиента 'Anonymous'.

IIS настроен для разрешения анонимного доступа. Пользователь IIS также имеет разрешение на просмотр / выполнение в служебной папке.

Служба отлично работает для некоторых звонков, но не для других. Приложение вызывает сервис при загрузке, но затем делает это отдельным звонком.

Служба использует wsHttpBinding:

 <wsHttpBinding>
    <binding name="wsHttpBindingSettings" maxReceivedMessageSize="2147483647">
      <security mode="None">
        <transport clientCredentialType="None" />
        <message establishSecurityContext="false" />
      </security>
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
  </wsHttpBinding>

Ответы [ 4 ]

1 голос
/ 25 февраля 2011

Я думаю, что ключом к этой проблеме было то, что она работала в IIS 5 на Windows XP. IIS 5 в XP имеет максимальное количество соединений 10. Как только мы превысили этот предел, я считаю, что мы получили 403 ошибки. Мы решили эту проблему, используя виртуальную машину Server 2008 вместо XP для демонстрации на ноутбуке.

0 голосов
/ 28 мая 2009

та же проблема здесь, я уменьшил проблему, добавив привязку по умолчанию к конечной точке и явно установив уровень безопасности на «Нет», где это возможно, теперь это работает лучше, но если вызовы на сервер выполняются слишком часто, происходит сбой Опять же, я также заметил, что веб-сервер разработки в VS2008 никогда не дает сбой даже при очень высокой частоте вызовов. так что это должно быть как-то связано с IIS, и я подозреваю, что это связано с продолжительностью контекста безопасности, но пока это только мое предположение, я не нашел реального решения

0 голосов
/ 22 июня 2009

Это может быть вызвано сочетанием настроек безопасности в IIS и web.config.

Если параметры в IIS были интегрированы и анонимны, а параметры в файле web.config были заданы для окон с impersonate = false.

Затем, когда машина находится в домене, будет использоваться встроенная аутентификация, и все будет работать нормально.

Когда машина была удалена из домена, будет использоваться анонимная аутентификация, тогда для доступа к ресурсам будет использоваться анонимный пользователь IIS. У этого пользователя ограниченные права, и поэтому некоторые вызовы могут быть неудачными.

Вы можете изменить параметр в web.config на impersonate = false, это будет означать, что идентификатор пула приложений будет использоваться для доступа к ресурсам.

0 голосов
/ 12 мая 2009

Услуга работает нормально для некоторых звонков, но не для других. Приложение вызывает сервис при загрузке, но затем в отдельном вызове делает это.

Может быть, сработавшие вызовы не выполняли каких-либо конфиденциальных операций, таких как доступ к БД или файлам? Под каким разрешением запускается пул приложений IIS, использует ли он олицетворение клиента? Это объяснило бы проблему ..

Также вы можете попробовать этот параметр:

  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="xyz">
          <!-- 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="True"/>
...