簡體   English   中英

自托管WCF服務-令人困惑的行為

[英]Self hosted WCF service - confusing behavior

我正在學習WCF,並且作為一項實際練習,我決定為ServiceHost類編寫通用包裝。 這個想法是要有一個像下面這樣的類:

public class Host<I(nterface), S(ervice)>
    where S : I, new()
{
    /**/

    ServiceHost mServiceHost;
    S mServiceInstance = new S();
}

其中I類型是具有[ServiceContract]屬性的接口,而S類型是正在實現上述接口的Service。

同時,我創建了一個輔助的hello-world類型的服務,以隨時隨地測試我的課程。

在主機的構造函數中,我實例化了內部ServiceHost,如下所示:

mServiceHost = new ServiceHost(mServiceInstance);

我添加了一個服務端點:

mServiceHost.AddServiceEndPoint(typeof(I), new BasicHttpBinding(), new Uri("http://localhost:40000/MyTestService"));

稍后,我打開了主機,啟動了我的應用程序,並嘗試查看我的瀏覽器是否指示“ http:// localhost:40000 / MyTestService”下存在一個服務-我得到了一個空白頁,並嘗試添加一個服務參考失敗。

稍后,我將相同的Uri添加到ServiceHost的構造函數中:

mServiceHost = new ServiceHost(mServiceInstance, new Uri("http://localhost:40000/MyTestService"));

該構造函數的第二個參數是:

params string[] baseAddresses 

要么

params Uri[] baseAddresses

無論如何,“ params”關鍵字的存在告訴我該參數是可選的。

我重新啟動了我的應用程序,並(使用瀏覽器)導航到了uri。 彈出服務頁面。 總而言之-它正在工作,但不是我期望的那樣,我似乎缺少了一些東西。

問題:

  1. 當我在ServiceHost構造函數中未提供可選的baseAddresses參數時,為什么在添加服務端點時嘗試提供地址時服務失敗?

  2. 我能否實現“我最初希望的樣子”的目標?

致以最誠摯的問候,希望很快能收到任何WCF專家的意見。

格雷格·桑索姆(Greg Sansom)回答了您的第一個問題。 至於第二個可以完成:請查看Juval Lowy的ServiceModelEx類(尤其是ServiceHost), 在這里下載它包含幾個對WCF有用的類

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM