2015-09-04 39 views
0

我完全陌生的WCF,我仍然在學習的基礎知識點。到目前爲止,我學到的是我可以創建一個服務,並在服務的配置文件中配置它的端點和行爲。當我通過Visual Studio運行我的服務時,將創建一個默認應用程序,並且該服務將成功託管在IIS中,並且一切正常。什麼是定義在一個WCF服務本身的服務端點時自託管主機應用程序甚至不能用它

現在,當我爲我的服務創建主機應用程序,我想通了,我要再次在代碼如下添加服務端點(和行爲)對我的服務:

ServiceHost host = new ServiceHost(typeof(HelloService)); 
host.AddServiceEndpoint(typeof(IHelloWorld), 
         new WSHttpContextBinding(), 
         "http://localhost:8873/helloworld/ws"); 

host.Open(); 

foreach (var se in host.Description.Endpoints) 
{ 
    Console.WriteLine(se.Address); 
} 

host.Close(); 
Console.Read(); 

或者我可以做它在宿主應用程序的配置文件

因此,這裏是我的問題:

  1. 什麼是服務自己的配置文件定義端點的點時,我在主機應用程序中甚至沒有用?

  2. 或者是該服務的配置文件只適用於IIS,僅託管主機?

  3. 最後是否有辦法在主機應用程序中擁有服務自己的配置(而不是在主機應用程序中再次定義端點和行爲),或者上述兩種配置完全不同?

編輯

我的最後一個問題是,我該如何使用在主機應用程序嗎?(在服務的配置文件中定義的配置不使用主機應用程序自己的配置文件或創建額外的代碼來定義新的端點和行爲 )

+0

「或者我可以在主機應用程序的配置文件中完成它?」 - 你是否認爲這是一個問題或陳述? – StingyJack

+0

爲什麼你有2個配置文件?主機配置文件是將被加載和讀取的文件。所有的配置都需要進入。 –

+0

服務有它自己的那個呢? – roostaamir

回答

1

現在,當我創建一個主機應用程序我的服務,我想通了 ,我應該在代碼

這是不正確再次添加服務端點(和行爲)對我的服務 。您不必在代碼中定義您的服務端點。這是配置文件的用途。

在您的服務的名稱簡單地傳遞(如您的配置文件中定義)作爲一類到您的ServiceHost構造器:

var host = new ServiceHost(typeof(MyNamespace.MyService)); 

隨着定義爲配置:

<system.serviceModel> 
    <services> 
     <service name="MyNamespace.MyService" behaviorConfiguration="MyServiceBehavior"> 
     <endpoint address="MyService" 
        binding="basicHttpBinding" 
        contract="MyNamespace.IMyService" /> 

     <endpoint address="mex" 
        binding="mexHttpBinding" 
        contract="IMetadataExchange" /> 

     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8456/"/> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 

    <behaviors> 
     <serviceBehaviors> 
     <behavior name="MyServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 

    </system.serviceModel> 

WCF會確定要使用配置文件來定義要運行的服務。

+0

這是真的,正如我在我的問題中所說的,我們可以在主機APPLATION的配置文件中定義配置。我如何使用在SERVICE的配置文件中定義的服務配置? – roostaamir

+0

@ user2078785 - 主機應用程序的配置與服務配置一樣。你說你是WCF的新手 - 你是否也是.Net的新手? .Net你每個進程有一個配置文件 –

+0

當我創建一個服務庫項目時,該項目有一個app.config文件。當我打算總是使用主機應用程序的app.config時,使用這個配置文件是什麼文件? – roostaamir

相關問題