2014-11-06 43 views
0

直接點,我有一個WCF項目和主機項目(我想啓動服務),當我做WCF作爲一個startUp項目,它承載服務,我收到一條確認消息(右下),一切工作正常,但是當我嘗試從主機項目託管時,它不託管,沒有任何確認消息。WCF不是主機

這裏是我的主代碼:

static void Main(string[] args) 
    { 
     using (ServiceHost host = new ServiceHost(typeof(MovieService))) 
     { 

       host.Open(); 
       Console.WriteLine("The host is online."); 
       Console.ReadLine(); 
       host.Close(); 
      } 


    } 

主機的app.config:

<system.serviceModel> 
<services> 
    <service name="CinemaProject.WCF.MovieService"> 
    <endpoint address="" binding="wsHttpBinding" contract="CinemaProject.WCF.IMovieService"> 
     <identity> 
     <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8733/Design_Time_Addresses/CinemaProject.WCF/MovieService/" /> 
     </baseAddresses> 
    </host> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior> 
     <serviceMetadata httpGetEnabled="True" /> 
     <serviceDebug includeExceptionDetailInFaults="False" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
</system.serviceModel> 

而且我的WCF代碼:

public class MovieService : IMovieService 
{ 
    static MovieCtr movieCtr = new MovieCtr(); 

    public void Add(Movie movie) 
    { 
     movieCtr.add(movie); 
    } 

    public void SearchById(int id) 
    { 
    } 

    public void Update(Movie movie) 
    { 
    } 

    public void Delete(Movie movie) 
    { 
    } 

    public void DeleteById(int id) 
    { 
    } 

    public IEnumerable<MovieDTO> All() 
    { 
     return movieCtr.All(); 
    } 
} 

和WCF的app.config:

<system.serviceModel> 
<services> 
    <service name="CinemaProject.WCF.MovieService"> 
    <endpoint address="" binding="wsHttpBinding" contract="CinemaProject.WCF.IMovieService"> 
     <identity> 
     <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8733/Design_Time_Addresses/CinemaProject.WCF/MovieService/" /> 
     </baseAddresses> 
    </host> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior> 
     <serviceMetadata httpGetEnabled="True" /> 
     <serviceDebug includeExceptionDetailInFaults="False" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

有人可以看看它,並指出我在正確的方向,併發佈一個解決方案,如果可能的話。

謝謝 馬呂斯J.

+0

因此您啓動主機代碼作爲控制檯應用程序,但消息「主機在線。」沒有出現? – Sjips 2014-11-06 13:14:50

+0

看起來,但我沒有在右下角看到確認消息,客戶端也無法連接,但如果啓動WCF,一切正常。 – MariusJusc 2014-11-06 13:17:28

+1

不知道您是否得到了確認消息,因爲您現在正在使用控制檯應用程序作爲主機。您可以通過在CMD窗口中使用'netstat -a'來檢查您的PC實際上是否正在監聽端口8733上的傳入連接。 – Sjips 2014-11-06 13:25:44

回答

0

嘗試從CMD窗口中運行以下命令:

netsh http add urlacl url=http://+8733:/ user=DOMAIN\user 

指定正確的域名和用戶