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, удаление линий и перезапуск устранили проблему.

Другие вопросы по тегам