【问题标题】:WiX not configuring IIS site correctlyWiX 未正确配置 IIS 站点
【发布时间】:2013-09-25 13:27:08
【问题描述】:

我有一个安装程序,它配置了 2 个网站,其中一个在根站点下有一些应用程序。顶级站点仅配置为 Windows 身份验证,如下所示:

<iis:WebSite Id="WebSite"
             Description="Application"
             Directory="WEBSITE_INSTALLLOCATION"
             AutoStart="yes"
             ConfigureIfExists="yes"
             StartOnInstall="yes">

        <iis:WebAddress Id="AllUnassigned" Port="80" />

        <iis:WebApplication Id="WebApplication"
                            Name="Console"
                            WebAppPool="WebAppPool"/>

        <iis:WebDirProperties Id="WebProperties"
                              AnonymousAccess="no"
                              WindowsAuthentication="yes"
                              AuthenticationProviders="NTLM,Negotiate"/>

</iis:WebSite>

安装程序中的其他(可选)组件然后声明应用程序/虚拟目录,如下所示:

<iis:WebVirtualDir Id="HelpWebSite" Alias="Help" Directory="ApexHelpDir" WebSite="WebSite">
    <iis:WebApplication Id="HelpApp" Name="Help" WebAppPool="WebAppPool"/>
    <iis:WebDirProperties Id="HelpProps" AnonymousAccess="yes" WindowsAuthentication="no"/>
</iis:WebVirtualDir>

我看到的行为是我所期望的 9/10 次,但安装程序会间歇性地安装具有匿名身份验证 windows 身份验证的“网站”站点,而不仅仅是帮助应用程序进行匿名身份验证。我能想到的唯一解释是,在根站点下添加虚拟目录/应用程序的行为偶尔会导致根继承子身份验证设置以及它自己的。

注意:我试图在 wixtoolset.org 网站上将此作为错误提出,但在尝试这样做时不断收到错误。

【问题讨论】:

  • 您找到解决此问题的方法了吗?
  • @Oren 不,不幸的是我还没有找到解决方案。我们目前使用的是 WiX 3.7,所以我不能说它是否在 3.8 中得到修复
  • 现在我想到了这一点,我已经看到了这种行为。我有这个安装,每隔一段时间就会启用两个身份验证。嗯。
  • +1 寻找解决方案。我部署到两个不同的环境,其中一个存在不一致的问题。有些日子,我们启用了匿名和窗口,而在其他日子,我们只启用了 Windows(按设计)。
  • 从 Wix v3.11 开始,我仍然看到这种行为。

标签: iis wix iis-7.5 wix-extension


【解决方案1】:

或者,您可以编写一个批处理脚本来创建一个网站并作为自定义操作从 WIX 调用。

批处理文件

%systemroot%\system32\inetsrv\appcmd.exe add site /name:YourWebSite /PhysicalPath:%systemdrive%\inetpub\wwwroot /bindings:http/*:80:

WIX(product.wxs)

<CustomAction Id="CreateWebsite" Execute="deferred" Impersonate="no" Return="check" Directory="TARGETDIR" PatchUninstall="no" ExeCommand="Batchfilepath" />

<InstallExecuteSequence>
<Custom Action="CreateWebsite" Before="InstallFinalize">NOT Installed AND NOT PATCH</Custom>
</InstallExecuteSequence>

更改您的 ExeCommand 属性值以指向正确的批处理文件路径。

【讨论】:

    【解决方案2】:

    我的解决方法是在服务器级别禁用匿名身份验证。

    似乎当这种不稳定发生时,它确实继承了服务器级别的设置,虽然我不知道为什么它只是有时会发生。

    这是 Powershell 脚本:

    Set-WebConfigurationProperty -Filter "/system.webServer/security/authentication/anonymousAuthentication" -Name Enabled -Value False -PSPath IIS:\

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 2018-12-13
      • 1970-01-01
      • 2017-07-29
      • 1970-01-01
      相关资源
      最近更新 更多