【问题标题】:Programmatically setting IIS6 Wildcard application maps以编程方式设置 IIS6 通配符应用程序映射
【发布时间】:2011-10-05 11:55:16
【问题描述】:

我目前正在支持构建过程,我需要在 iis6 网站上设置 Wilcard 应用程序映射。

我目前混合使用 SDC 任务和 MSBuild 扩展包来做各种事情,但是在尝试使用这两个框架设置通配符应用程序映射时遇到了难题。

也许我只是在文档中错过了它,但我想知道是否有人知道如何设置这些。

要明确的是,您可以在 gui 中设置这些:

我对设置此设置的其他方法持开放态度,包括在必要时编写一些代码来执行此操作:)

【问题讨论】:

    标签: asp.net deployment msbuild iis-6


    【解决方案1】:

    如果您使用 Wix,您可以使用 WixIISExtensions 添加它们:

    <iis:WebApplicationExtension CheckPath="no"
             Script="yes"
             Executable="[FRAMEWORKROOT]v2.0.50727\aspnet_isapi.dll"
             Verbs="GET,HEAD,POST"/>
    

    另外,正如post 中所建议的,尝试:

    String strPath = "IIS://localhost/W3SVC/1/Root";
    DirectoryEntry IISEntry = new DirectoryEntry(strPath);
    PropertyValueCollection applicationMappings = IISEntry.Properties["ScriptMaps"];
    applicationMappings.Add(@",%Windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,4,All");
    IISEntry.CommitChanges();
    

    【讨论】:

    • 不幸的是,wix 对我没有帮助,尽管这正是我想要实现的,但我注意到 MSBuildExtensionPack 在其创建任务下确实有一个 ScriptMaps 部分,不幸的是我正在使用 SDC 任务创建站点时,我可能必须迁移到扩展方法,由于它在脚本中的格式设置,它的维护性较差,除非有人知道 sdc 方法,否则另一个可能的答案是使用类似 Powershell 的脚本编写它
    • 我认为 Powershell 可以在 IIS7 中为您提供帮助:learn.iis.net/page.aspx/437/…。也许在 IIS6 中,但不确定。否则,也许可以使用 c# 代码创建您自己的 MSBuild 扩展任务。
    • 另外,你有没有看过 Iis6ServiceExtensionFile 类:msbuildextensionpack.com/help/4.0.3.0/index.html
    • 您输入的第一个条目竟然是最简单的解决方案 我推出了一个非常基本的 MSBuild 任务来完成我需要的工作,我从元数据库中查找了我需要的站点的路径并放置%Windir%之前的逗号之前的星号,工作了一种享受..感谢您为我指明了正确的方向。我的谷歌技能需要提高:)
    【解决方案2】:

    使用 msbuild 扩展包可以做到:

    <MSBuild.ExtensionPack.Web.Iis6VirtualDirectory TaskAction="Create"  Website="site" Name="vdir" Properties="ScriptMaps=*,$(MSBuildToolsPath)\aspnet_isapi.dll,1,All"/>
    

    这将替换所有脚本映射,而不是添加一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      • 1970-01-01
      • 2016-11-02
      相关资源
      最近更新 更多