Вывод ошибок при размещении службы документооборота xamlx в IIS 7.5

#workflow-foundation-4

#рабочий процесс-foundation-4

Вопрос:

Я создал самый простой веб-сервис, используя Receive / SendReply с WWF 4 (.Net 4). Я не публикую код, поскольку проблема связана с развертыванием.

Документация и, следовательно, я ожидаю, что файл xamlx и файл web.config вместе с файлами dll должны быть скопированы в папки IIS application и bin, что я и сделал. Служба работает нормально при запуске через Visual Studio, однако, когда я копирую файлы в папку IIS, она выдает следующую ошибку.

Ошибка HTTP 404.3 — Не найдена Запрашиваемая страница не может быть обслужена из-за конфигурации расширения. Если страница представляет собой скрипт, добавьте обработчик. Если файл необходимо загрузить, добавьте MIME-карту.

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

 <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <bindings />
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>
  

Комментарии:

1. Я заметил, что в сопоставлениях обработчиков нет сопоставления *.xamlx и нет C:WINDOWSMicrosoft.NETFrameworkv4.0.30319aspnet_isapi.dll модуль в списке модулей. Я обнаружил это на другом компьютере. Тогда возникает вопрос, почему она отсутствует на моем компьютере и как я могу ее установить? Я использую Windows Ultimate 7 и Visual Studio 2010.

Ответ №1:

Просто расширяю комментарий Мориса:

Вы должны запускаться aspnet_regiis.exe -i от имени администратора.

У меня был этот файл в: C:WindowsMicrosoft.NETFrameworkv4.0.30319

После ее выполнения (это заняло около 5 секунд) У меня были все сопоставления, необходимые для запуска рабочего процесса.

Ответ №2:

Похоже, вам не хватает HttpHandler для рабочих процессов. Обычно это находится в файле web.config вашего компьютера.

 <configuration>
  <configSections>
    <sectionGroup name="system.xaml.hosting"
                  type="System.Xaml.Hosting.Configuration.XamlHostingSectionGroup, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
      <section name="httpHandlers"
               type="System.Xaml.Hosting.Configuration.XamlHostingSection, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </sectionGroup>
  </configSections>

  <system.xaml.hosting>
    <httpHandlers>
      <add xamlRootElementType="System.ServiceModel.Activities.WorkflowService, System.ServiceModel.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
           httpHandlerType="System.ServiceModel.Activities.Activation.ServiceModelActivitiesActivationHandlerAsync, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      <add xamlRootElementType="System.Activities.Activity, System.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
           httpHandlerType="System.ServiceModel.Activities.Activation.ServiceModelActivitiesActivationHandlerAsync, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </httpHandlers>
  </system.xaml.hosting>
  

Комментарии:

1. Я переустановил .net Framework 4, и он добавил модуль и сопоставление модулей для файлов *.xamlx в IIS. Службы только начали работать. Черт возьми, какая пустая трата времени на выяснение этого.

2. Был ли IIS установлен после .NET 4 на рассматриваемом компьютере? В этом случае выполняется aspnet_regiis.exe должно устранить проблему.

3. Да, IIS был установлен после .Net 4, и в этом была проблема. Однако я попросил других опробовать aspnet_regiis, но они не были успешными и в конечном итоге переустановили .Net 4.