ターゲットマシンがWCFでその可能性を積極的に拒否したため、接続できませんでした

wcf

AddServiceLibraryという名前のクラスライブラリを作成しました。その中にAssemblyLoaderという名前のメソッドがあります。コードは以下のとおりです。

文字列executionAssemblyName = Application.ExecutablePath; AssemblyName asmName = AssemblyName.GetAssemblyName(executionAssemblyName); AppDomain appDomain = AppDomain.CurrentDomain;アセンブリassembly = appDomain.Load(asmName); _assemblyTypes = assembly.GetTypes()。ToList(); LoadAppConfig();

このメソッドは、実行中のアセンブリを現在のアプリケーションドメインにロードします。 LoadAppConfig()という別のメソッドがあります。

ServicesSectionとしてのServicesSection serviceSection = ConfigurationManager.GetSection( "system.serviceModel / services")。

ServiceElementCollection sereleColl = serviceSection.Services;

string endPointAddress = string.Empty; foreach(sereleCollのvar ele){_serviceType = GetServiceType((System.ServiceModel.Configuration.ServiceElement)(ele))。Name);

ブレーク;

}

ServiceHoster.HostService(_serviceType);

このメソッドはapp.configファイルを読み取り、wcfサービスの種類を見つけます。
. もう1つServiceHosterクラスがあり、その中にメソッドHostServiceがあります。

public static void HostService(Type serviceType){

using(ServiceHost host = new ServiceHost(serviceType)){host.Open(); }

}

今、私はMyWCFServiceと呼ばれる別のプロジェクトを持っています、そして私はこのプロジェクトにAddServiceLibraryの参照を追加してメソッドを呼び出します。

AddServiceLibrary.LoadLibrary lb = new AddServiceLibrary.LoadLibrary(); lb.AssemblyLoader();

この時点で私のサービスは正しくホストされていることを願っていますが、私のクライアントプロジェクトでAddServiceReferenceが欲しいときに、ターゲットマシンから積極的に拒否されたため接続できません、それはサービスを見つけてうまく働いています。 誰かがそれを見て、私のアプローチで何が間違っている可能性があるのか​​を私に提案してください。

  0  0


ベストアンサー

ServiceHostインスタンスを開くとすぐに破棄します。 使用中のブロックを取り外し、このホストの廃棄処理を別々に行います。

静的ServiceHosterを使用するという設計上の決定は、おそらくここで問題になります。 ServiceHostインスタンスをインスタンス化することによってサービスをホストしているものは何でも、このインスタンスの寿命とその廃棄を管理する必要があります。

5


タイトルとURLをコピーしました