Iis WIX在新的VirtDir中安装应用程序两次链接到新的应用程序池
我正在尝试在默认网站根目录下的现有VirtDir indx下创建一个新的WebApp OPCClientWS。路径将是/indx/OPCClientWS。此路径实际上已创建,并链接到新创建的应用程序池 然而,在应用程序池中,我最终得到了一个额外的应用程序引用://indx/OPCClientWS。有了此附加应用程序引用,IIS将根本不会启动网站,抛出错误80070057: 万维网发布服务WWW服务未注册 站点1的URL前缀http://*:80//indx/OPCClientWS。该网址可能 无效。该站点已被禁用。数据字段包含 错误号 wxs代码的主要部分如下: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。该网址可能 无
<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、删除线路并重新启动修复了该问题