2010-09-22 52 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