我如何通过我的域在本地主机上提供控制台托管的WCF服务

本文关键字:控制台 服务 WCF 主机 我的 何通过 | 更新日期: 2023-09-27 18:18:15

我有以下问题:

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

这个端口可以从外部通过mydomain.org:62345/service访问。

如果我现在尝试从(外部)桌面应用程序检索并添加服务引用到此服务,我得到一个400:bad请求,因为应用程序试图从localhost:72/service检索wsdl ?WSDL代替mydomain.org:62345/service? WSDL .

我怎样才能改变我的控制台应用程序,以使其正常工作?

提前谢谢你,Martin

 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();
        }
    }

我如何通过我的域在本地主机上提供控制台托管的WCF服务

不要在localhost上托管服务,而是使用系统LAN卡的IP,或者使用"0.0.0.0"作为所有网络接口('*'或'+'也可以)。

为了使服务可以从LAN外部访问,您可能需要在路由器中设置一些端口转发。