2010-09-22 64 views
0

我正在使用Wix安装我的Web应用程序,并且它包含Silverlight应用程序。由于跨域限制,我需要安装ClientAccessPolicy文件以确保Silverlight应用程序可以与包含的Web服务进行通信。使用Wix将ClientAccessPolicy.xml安装到默认网站

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

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

我怎样才能找到一个IIS“默认Web站点”的文件中,有作为的安装部分复制目录?

回答

1

不幸的是,您必须为此创作一个自定义操作。这似乎只是一个简单的即时操作,即找到正确的目录路径并将其放置到属性中。

UPDATE:这是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 - 普通用户是不够的。

希望这会有所帮助。

+0

我想一个行动可能是必要的,唯一的代码,我目前为止已经看到,实际上找到的价值是VBScript然而(http://stackoverflow.com/questions/1835929/need-to-find-default-web -sites - 主目录 - 在-IIS)。任何想法如何从C#做到这一点? – 2010-09-22 12:03:55

+0

我已经添加了一些示例代码。 – 2010-09-22 12:35:26