Iis WIX在新的VirtDir中安装应用程序两次链接到新的应用程序池

Iis WIX在新的VirtDir中安装应用程序两次链接到新的应用程序池,iis,web-applications,wix,virtual-directory,Iis,Web Applications,Wix,Virtual Directory,我正在尝试在默认网站根目录下的现有VirtDir indx下创建一个新的WebApp OPCClientWS。路径将是/indx/OPCClientWS。此路径实际上已创建,并链接到新创建的应用程序池 然而,在应用程序池中,我最终得到了一个额外的应用程序引用://indx/OPCClientWS。有了此附加应用程序引用,IIS将根本不会启动网站,抛出错误80070057: 万维网发布服务WWW服务未注册 站点1的URL前缀http://*:80//indx/OPCClientWS。该网址可能 无

我正在尝试在默认网站根目录下的现有VirtDir indx下创建一个新的WebApp OPCClientWS。路径将是/indx/OPCClientWS。此路径实际上已创建,并链接到新创建的应用程序池

然而,在应用程序池中,我最终得到了一个额外的应用程序引用://indx/OPCClientWS。有了此附加应用程序引用,IIS将根本不会启动网站,抛出错误80070057:

万维网发布服务WWW服务未注册 站点1的URL前缀http://*:80//indx/OPCClientWS。该网址可能 无效。该站点已被禁用。数据字段包含 错误号

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>
    <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>
正在为应用程序创建应用程序池,在下一个片段中设置:

  <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>
以及将各种组件安装到虚拟目录所指向的程序文件目录中:

  <Fragment>
    <iis:WebSite Id="localhost_root" Description="Default Web Site">
      <iis:WebAddress Id="localhost_addr" IP="AllUnassigned" Port="80"/>
    </iis:WebSite>
  </Fragment>
  <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>
目标平台是Windows 2008R2 64位,IIS 7.5我已经搜索过网络广告nauseum。是否有方法调试发送到IIS的内容,例如使用appcmd或类似工具


FWIW,我会将此提交给wixtoolset,但他们的bug提交网站似乎被水淹没了…

深入C:\Windows\System32\inetsrv\config上的applicationHost.config文件,我发现有一个应用程序被卡住了,可能是因为之前的安装失败。我怀疑这可能是由iis:WebVirtualDir元素别名中的前导斜杠引起的

违反规定的是:

<application path="//indx/OPCClientWS" applicationPool="AnSMAppPool">
  <virtualDirectory path="/" physicalPath="C:\Program Files (x86)\Siemens AnSM\OPCClientWS" />
</application>
关闭IIS、删除线路并重新启动修复了该问题