Развертывание WCF в IIS 6 приводит к ошибке разрешения 403 - PullRequest
4 голосов
/ 20 февраля 2010

Я никогда ранее не развертывал службу WCF на IIS 6.У меня есть служба, которую я развертываю на IIS 6, используя конфигурацию по умолчанию как часть проекта WCF.С тех пор я упростил настройку, думая, что это могло быть проблемой.Вот ошибка, которую я получаю, если просматриваю службу в браузере:

Ошибка HTTP 403.1 - запрещено: доступ запрещен.

Моя конфигурация сейчасвыглядит следующим образом:

<system.serviceModel>
    <services>
        <service name="MyCompany.WebServices.MyService">
            <endpoint address="" binding="basicHttpBinding" contract="MyCompany.WebServices.IMyService" />
        </service>
    </services>
</system.serviceModel>

Если я пытаюсь добавить его в качестве ссылки в ASP.NET MVC, я получаю следующее:

Произошла ошибка при загрузке 'http://ws.mycompany.com/MyService.svc'. Запрос не выполнен с состоянием HTTP 403: запрещено.Метаданные содержат ссылку, которая не может быть разрешена: «http://ws.mycompany.com/MyService.svc'. HTTP-запрос был запрещен при использовании схемы аутентификации клиента« Аноним ».Удаленный сервер возвратил ошибку: (403) Запрещено.Если служба определена в текущем решении, попробуйте создать решение и снова добавить ссылку на службу.

Есть идеи, что может происходить?

ОБНОВЛЕНО:

Кажется, это проблема конфигурации в моем окне IIS 6.Я предположил бы это, потому что я создал совершенно новое приложение WCF ASP.NET 3.5 и развернул его по новому URL-адресу http://ws.unitedoneresources.com/Service1.svc.. Если я пытаюсь вызвать эту службу, я получаю ту же ошибку HTTP, что и выше.Полная конфигурация службы следующая:

  <system.serviceModel>
    <services>
      <service name="WcfService1.Service1" behaviorConfiguration="WcfService1.Service1Behavior">
        <!-- Service Endpoints -->
        <endpoint address="" binding="wsHttpBinding" contract="WcfService1.IService1">
          <!-- 
              Upon deployment, the following identity element should be removed or replaced to reflect the 
              identity under which the deployed service runs.  If removed, WCF will infer an appropriate identity 
              automatically.
          -->
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="WcfService1.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>
  </system.serviceModel>

Опять же, это совершенно новое приложение WCF ASP.NET 3.5, поэтому я ничего не изменил в самом проекте.

Ответы [ 4 ]

2 голосов
/ 01 марта 2010

Я испортил веб-сайт, установил WCF на IIS 6 (используя ServiceModelReg.exe / i / x в командной строке) и снова развернул его.Это сработало!

Спасибо!

1 голос
/ 02 августа 2011

Нашел этот вопрос в поисках решения той же проблемы.Я забыл изменить разрешения на «Скрипты и исполняемые файлы» в каталоге сервисов.Я был на II7

0 голосов
/ 28 января 2011

У нас были похожие симптомы, но только с глаголами PUT и DELETE в IIS 6.0.

По умолчанию расширение .svc в нашем приложении IIS разрешало только глаголы GET, POST.

Исправлена ​​проблема с добавлением глаголов (или разрешением всех глаголов) для расширения .svc для приложения.

0 голосов
/ 20 февраля 2010

Вы действительно не даете нам многого, чтобы продолжить здесь - чего не хватает, так это биты конфигурации на стороне сервера, которые показывают нам, как вы настраиваете безопасность - вы можете обновить свой вопрос и показать нам все внутри тега <system.serviceModel> в конфигурации вашего сервера и на вашем клиенте, вызывающем сервер ??

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

Другой вопрос: как вы настроили сторону IIS?Вы создали виртуальный каталог для своего сервиса?По сути, при размещении в IIS URL-адрес вашей службы определяется именем сервера (плюс, возможно, порт), виртуальным каталогом, в котором находится ваш файл * .svc, а также именем и расширением самого файла svc.

...