2009-07-09 91 views
0
概率

我創建了一個稱爲AddServiceLibrary類庫中,我已經叫 的方法AssemblyLoader的代碼如下:無連接可以作出,因爲目標機器積極地拒絕它在WCF

string executingAssemblyName = Application.ExecutablePath; 
     AssemblyName asmName = AssemblyName.GetAssemblyName(executingAssemblyName); 
     AppDomain appDomain = AppDomain.CurrentDomain; 
     Assembly assembly = appDomain.Load(asmName); 
     _assemblyTypes = assembly.GetTypes().ToList();    
     LoadAppConfig(); 

這種方法加載在當前appdomain中執行程序集。 我有()

ServicesSection serviceSection = ConfigurationManager.GetSection("system.serviceModel/services") as ServicesSection; 

      ServiceElementCollection sereleColl = serviceSection.Services; 


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

       break; 

      } 

      ServiceHoster.HostService(_serviceType); 

稱爲LoadAppConfig另一種方法,此方法讀取app.config文件,並發現WCF服務的類型。 我還有一個類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告訴它是我 無連接可以作出,因爲目標機器積極地拒絕它的概率在 雖然如果我不使用我的AddServiceLibrary,它會發現服務並正常工作。 請有人看看它,並建議我在我的方法可能是錯誤的。

回答

5

一旦打開ServiceHost實例,您就會處置它。拆下使用塊,並單獨處理該主機。

您的設計決定有一個靜態的ServiceHoster可能是一個問題在這裏。無論是通過實例化ServiceHost實例託管服務,都需要管理此實例的壽命及其處置。

+0

謝謝先生,它工作時,我刪除使用塊,但先生你可以請指導我如何實現服務主機分開處置? – 2009-07-09 11:33:22

相關問題