2013-06-13 15 views
1

我有以下问题:如何在本地通过我的域提供Console-Hosted WCF服务?

我在localhost:72/service上的服务器上的控制台应用程序中托管WCF服务。

该端口可从外部通过例如mydomain.org:62345/service。

如果我现在尝试从(外部)桌面应用程序中检索服务引用并将其添加到此服务,我得到一个400:错误的请求,因为该应用程序试图从localhost:72/service?wsdl检索wsdl而不是mydomain.org:62345/service?wsdl。

如何更改我的控制台应用程序以使其正常工作?

THX提前,马丁

static void Main(string[] args) 
    { 

     using (ServiceHost sh = new ServiceHost(typeof(MSSQL_MasterToDesktop_Service.Service1), new Uri("http://localhost:72/Service"))) 
     { 

      sh.AddServiceEndpoint(typeof(MSSQL_MasterToDesktop_Service.ISync), new WSHttpBinding(), ""); 
      //sh.AddServiceEndpoint(typeof(MSSQL_MasterToDesktop_Service.ISync), new WSHttpBinding(), 

      ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); 
      smb.HttpGetEnabled = true; 
      sh.Description.Behaviors.Add(smb); 


      sh.Open(); 

      System.Console.WriteLine("Waiting for connections..."); 
      System.Console.ReadLine(); 


      sh.Close(); 
     } 

    } 

回答

0

localhost不要托管服务,而是使用系统的网卡的IP,或使用“0.0.0.0”的所有网络接口(“* '或'+'也可以)。

为了使服务从局域网外部可达,您可能需要在路由器中设置一些端口转发。