WIX在新的VirtDir中安装App两次链接到新的AppPool

时间:2015-03-11 02:21:12

标签: iis web-applications wix virtual-directory

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

但是,在App Pool中,我最终得到了一个额外的App引用:// indx / OPCClientWS。有了这个额外的App参考,IIS根本不会启动网站,抛出错误80070057:

  

万维网发布服务(WWW服务)未注册   站点1的URL前缀http:// *:80 // indx / OPCClientWS。该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>

目标平台是Windows 2008R2 64位,IIS 7.5我搜索了网页 ad nauseum 。有没有办法调试发送到IIS的内容(例如,使用appcmd或类似内容)?

FWIW,我会将此提交给wixtoolset,但他们的错误提交网站似乎已经被软化......

1 个答案:

答案 0 :(得分:0)

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

违规行是:

<application path="//indx/OPCClientWS" applicationPool="AnSMAppPool">
  <virtualDirectory path="/" physicalPath="C:\Program Files (x86)\Siemens AnSM\OPCClientWS" />
</application>

关闭IIS,删除行,然后重新启动修复问题。