当我们使用Uri[] baseAddresses
类的CreateServiceHost
方法创建服务主机时,有一个名为ServiceHostFactory
的参数。
何时调用此方法? baseaddresses数组的值是多少?从哪里开始?
我们可以从最终设置它吗?
由于
答案 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();
}
}
}