1

当我们使用类的方法Uri[] baseAddresses创建服务主机时,会调用参数。CreateServiceHostServiceHostFactory

什么时候调用这个方法?baseaddresses 数组中的值是多少?从哪里设置?

我们可以从头开始设置吗?

谢谢

4

1 回答 1

1

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

如果您以编程方式托管您的服务,它将由您传入。我目前在使用方法本身时遇到问题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();
            }
        }
    }
于 2012-10-11T22:13:37.653 回答