我正在使用Wix来安装我的Web应用程序,它包含一个Silverlight应用程序。由于跨域限制,我需要安装ClientAccessPolicy文件以确保Silverlight应用程序可以与包含的Web服务进行通信。
不幸的是,必须从站点的根目录提供ClientAccessPolicy.xml,因此我不能将其放在我的Web服务或网站上。 e.g。
作品:http://someserver/ClientAccessPolicy.xml
不起作用:http://someserver/MyApp/ClientAccessPolicy.xml
如何找到IIS“默认网站”的目录,以便在安装过程中将文件复制到那里?
答案 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 - 常规用户还不够。
希望这有帮助。