使用Wix将ClientAccessPolicy.xml安装到默认网站

时间:2010-09-22 11:24:32

标签: iis wix

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

不幸的是,必须从站点的根目录提供ClientAccessPolicy.xml,因此我不能将其放在我的Web服务或网站上。 e.g。

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

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

1 个答案:

答案 0 :(得分: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 - 常规用户还不够。

希望这有帮助。