WIX Установка приложения в новом VirtDir дважды связывается с новым AppPool
Я пытаюсь создать новое WebApp, OPCClientWS, под существующим VirtDir, indx, под корнем веб-сайта по умолчанию. Путь будет /indx/OPCClientWS. Этот путь действительно создается и связан с только что созданным пулом приложений.
Однако в пуле приложений я получаю дополнительную ссылку на приложение: //indx/OPCClientWS. С этой дополнительной ссылкой на приложение IIS вообще не запустит веб-сайт, выдав ошибку 80070057:
Служба публикации в Интернете (WWW Service) не зарегистрировала префикс URL http://*:80//indx/OPCClientWS для сайта 1. URL может быть недействительным. Сайт был отключен. Поле данных содержит номер ошибки.
Существенные части кода wxs следующие:
<Feature Id="ProductFeature" Title="OPCClientWS" Level="1">
<ComponentGroupRef Id="ProductComponents" />
<ComponentRef Id="AnSM_AppPoolInstall"/>
<ComponentRef Id="AnSM_WebDir"/>
</Feature>
Поиск корня существующего веб-сайта, который уже содержит виртуальный каталог indx:
<Fragment>
<iis:WebSite Id="localhost_root" Description="Default Web Site">
<iis:WebAddress Id="localhost_addr" IP="AllUnassigned" Port="80"/>
</iis:WebSite>
</Fragment>
Создание пула приложений для приложения, настроенного в следующем фрагменте:
<Fragment>
<DirectoryRef Id="INSTALLFOLDER">
<Component Id="AnSM_AppPoolInstall" Guid="{8C762E41-A06F-49F9-8846-29CB148A446B}" KeyPath="yes">
<iis:WebAppPool Id="AnSM_AppPool" Name="AnSMAppPool" ManagedRuntimeVersion="v2.0" Identity="networkService"/>
</Component>
</DirectoryRef>
</Fragment>
Добавление WebVirtualDirectory на существующий веб-сайт:
<Fragment>
<DirectoryRef Id="INSTALLFOLDER">
<Component Id="AnSM_WebDir" Guid="{42A87FEB-BF0A-430D-8F23-3C4F8FE4E85F}" KeyPath="yes">
<CreateFolder/>
<iis:WebVirtualDir Id="OPCClient_VirtDir" Alias="indx/OPCClientWS" Directory="INSTALLFOLDER" WebSite="localhost_root">
<iis:WebApplication Id="AnSM_OPCWS" Name="OpcClientWS" WebAppPool="AnSM_AppPool"/>
<iis:WebDirProperties Id="AnSM_WebProps" AnonymousAccess="no" BasicAuthentication="no" WindowsAuthentication="yes"/>
</iis:WebVirtualDir>
</Component>
</DirectoryRef>
</Fragment>
И установка различных компонентов в каталог (в Program Files), на который указывает виртуальный каталог:
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="XHQAnSM" Name="Siemens AnSM">
<Directory Id="INSTALLFOLDER" Name="OPCClientWS">
<Directory Id="OPCClientWS.Content"/>
<Directory Id="OPCClientWS.Binaries" Name="bin"/>
<Directory Id="OPCClientWS.Symbols" Name="bin"/>
</Directory>
</Directory>
</Directory>
</Directory>
</Fragment>
Target platform is Windows 2008R2 64-bit, IIS 7.5 I have searched the web ad nauseum. Is there a way to debug what is being sent to IIS (eg, using appcmd or similar)?
FWIW, I would submit this to wixtoolset, but their bug submission website seems to be hosed...
1 ответ
Заглянув в файл applicationHost.config (по адресу C:\Windows\System32\inetsrv\config), я обнаружил, что приложение зависло, вероятно, из-за предыдущей неудачной установки. Я подозреваю, что это могло быть вызвано косой чертой в псевдониме элемента iis:WebVirtualDir.
Оскорбительные строки:
<application path="//indx/OPCClientWS" applicationPool="AnSMAppPool">
<virtualDirectory path="/" physicalPath="C:\Program Files (x86)\Siemens AnSM\OPCClientWS" />
</application>
Выключение IIS, удаление линий и перезапуск устранили проблему.