2011-09-19 69 views
4

在我的silverlight應用程序中,我使用對wcf服務的服務引用。將此項目部署到我的IIS測試後,我看不到任何.config文件,其中存儲了所有端點信息。該ServiceReferences.ClientConfig打包在xap軟件包中。那麼我將如何將其部署到客戶的服務器呢?我需要一種方法來配置端點。你是怎樣做的?Silverlight的Wcf配置

回答

3

而不是試圖爲了支持在XAP中編輯clientconfig文件,下面是另一種方法。

將Web服務端點地址添加到承載Silverlight應用程序的HTML頁面中的Silverlight InitParams。也許可以通過ASP.NET動態設置initparams。在創建客戶端服務代理時以編程方式使用此地址。

另一種選擇是假定Web服務始終位於託管頁面的相對目錄中。我使用的是這樣的:

new Uri(HtmlPage.Document.DocumentUri, new Uri("./MyService/MyService.svc", UriKind.Relative)); 

合併這兩個選項的效果很好,如果initParams在丟失,我使用的是相對路徑衆所周知的位置(在部署/生產有用)。如果IntiParams有一個端點,我使用它(有助於調試/測試)。

3

如果你的意思是配置端點的應用程序已發佈後那麼有沒有辦法做很容易(你可以解壓XAP,改變ServiceReferences.ClientConfig,重新壓縮...)

+1

.NET有什麼意想不到的方法!但是,謝謝。 – Nickolodeon

+0

@Nickolodeon,我理解你的觀點,但xap文件的目標之一是打包和應用程序及其所有依賴項。將配置文件從其中移出可防止單個文件的目標。在我的SL應用程序中,我通常使用生成事件來根據配置複製相應的服務conf文件(dev,test,prod ...) –

+0

我會嘗試InitParams方法。但是,當所有失敗,修改XAP是要走的路 - 我嘗試了它,它的工作原理) – Nickolodeon