【问题标题】:Install ClientAccessPolicy.xml to Default Web Site using Wix使用 Wix 将 ClientAccessPolicy.xml 安装到默认网站
【发布时间】:2010-09-22 11:24:32
【问题描述】:

我正在使用 Wix 安装我的 Web 应用程序,它包含一个 Silverlight 应用程序。由于跨域限制,我需要安装一个 ClientAccessPolicy 文件以确保 Silverlight 应用程序可以与包含的 Web 服务通信。

不幸的是,ClientAccessPolicy.xml 必须从站点的根目录中可用,所以我不能将它放在我的 Web 服务或网站中。例如

作品:http://someserver/ClientAccessPolicy.xml
不起作用:http://someserver/MyApp/ClientAccessPolicy.xml

如何找到 IIS“默认网站”的目录,以便在安装过程中将文件复制到那里?

【问题讨论】:

    标签: iis wix


    【解决方案1】:

    很遗憾,您必须为此编写自定义操作。似乎只是一个简单的即时动作,就是找到正确的目录路径,放到一个属性中。

    更新:此示例 C# 代码可能如下所示:

     DirectoryEntry website = new DirectoryEntry(string.Format("IIS://localhost/w3svc/{0}/Root", siteID));
     if (website != null)
     {
        string sitePath = website.InvokeGet("Path") as string;
        if (sitePath != null)
        {
           session["SITE_PATH"] = sitePath;
           return ActionResult.Success;
        }
     }
     return ActionResult.Failure;
    

    它假定您以某种方式知道 siteID。如果它并不总是默认网站,最好让用户选择,例如。但那是另一回事了。

    另请注意,此代码需要特殊权限才能访问 DirectoryEntry - 普通用户是不够的。

    希望这会有所帮助。

    【讨论】:

    • 我认为可能需要采取行动,但到目前为止,我看到的唯一实际找到该值的代码是 vbscript (stackoverflow.com/questions/1835929/…)。任何想法如何从 C# 中做到这一点?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    相关资源
    最近更新 更多