用于WCF服务的CreateServiceHost中的baseAddresses

时间:2012-09-11 11:56:28

标签: wcf

当我们使用Uri[] baseAddresses类的CreateServiceHost方法创建服务主机时,有一个名为ServiceHostFactory的参数。

何时调用此方法? baseaddresses数组的值是多少?从哪里开始?

我们可以从最终设置它吗?

由于

1 个答案:

答案 0 :(得分:1)

如果您在IIS或其他容器上托管服务,它将自动传递(从您的配置文件等)。

如果您以编程方式托管服务,则会由您传递。我目前having trouble使用CreateServiceHost方法本身,但是如果你使用标准的ServiceHost类,它的外观就是这样(Uri的数组就是你的样子寻找):

using System;
using System.ServiceModel;
using System.ServiceModel.Description;
using MyApp.DatabaseService.Contracts; // IDatabase interface
using MyApp.DatabaseService.Impl; //DatabaseService

 public class Program
    {

        static void Main(string[] args)
        {
            using (ServiceHost host = new ServiceHost(
                typeof(DatabaseService),
                new Uri[]{          // <-- baseAddresses
                    new Uri("http://localhost:8111/DatabaseService"),
                    new Uri("net.pipe://localhost/DatabaseService")
                }))
            {
                host.AddServiceEndpoint(typeof(IDatabase),
                    new BasicHttpBinding(),
                    "");

                host.AddServiceEndpoint(typeof(IDatabase),
                    new NetNamedPipeBinding(),
                    "");

                // Add ability to browse through browser
                ServiceMetadataBehavior meta = new ServiceMetadataBehavior();
                meta.HttpGetEnabled = true;
                host.Description.Behaviors.Add(meta);

                host.Open();

                Console.WriteLine("IDatabase: DatabaseService");
                Console.WriteLine("Service Running. Press Enter to exit...");
                Console.ReadLine();

                host.Close();
            }
        }
    }