#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.