2011-01-03 11 views
1

私はWCFを学ぶ過程にあり、実践的な練習としてServiceHostクラス用の汎用ラッパーを作成することに決めました。自己ホスト型WCFサービス - 混乱している動作

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

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

I型は[ServiceContract]属性& Sタイプとのインタフェースであるforementionedインタフェースを実装のサービスです:アイデアは、以下のようなクラスを持つことです。

私は外出先でクラスをテストするために、補助的なhello-world型サービスを作成しました。ホストのコンストラクタで

私はこのような内部のServiceHostをインスタンス化してきました:

mServiceHost = new ServiceHost(mServiceInstance); 

私はサービスエンドポイントを追加しました:

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

少し後、私はホストを開きました、私のアプリケーションを起動し、私のブラウザが "http:// localhost:40000/MyTestService"の下に存在するサービスを示しているかどうかを確認しようとしました - 空白のページがあり、私は後のServiceHostのコンストラクタに同じURIを追加しました

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

をコンストラクタの第2引数は、どちらかであること:いずれの場合で

params string[] baseAddresses 

または

params Uri[] baseAddresses 

を、 "params"キーワードがあると、このパラメータはOPTIONALであることがわかります。

私は、私のアプリをreacitvatedして(ブラウザを使用して)uriにナビゲートしました。サービスページがポップアップしました。全体的に - それは働いていますが、私が期待した通りではありません。私は何かが欠けているようです。

質問:私はのServiceHostのコンストラクタでオプションのbaseAddressesのパラメータを指定しなかったとき

  1. なぜサービスが失敗しました - サービスエンドポイントを追加するときにアドレスを供給しようとしたとき?

  2. 「私が最初に望んでいた方法」の目標を達成できますか?

お待ちしており、すぐにWCFの専門家にお聞きしたいと思います。

答えて

1

Greg Sansomがあなたの最初の質問に答えました。 次のようにすることができます:Juval LowyのServiceModelExクラス(特にServiceHost)をご覧くださいdownload here WCFのいくつかの有用なクラスが含まれています

+0

Wish彼は彼の答えを削除しなかった、それはいくつかのフォローアップの読書の後:/ – Maciek

関連する問題