我不知道你是什麼意思從配置拉相關的地址和合同 - 這是自動完成。
服務託管:在配置文件中的服務部分自動在ServiceHost的託管服務的類型成對
using (var host = new ServiceHost(typeof(MyNamespace.Service))
{
// no endpoint setting needed if configuration is correctly paired by the type name
host.Open()
}
服務配置:
<services>
<service name="MyNamespace.Service">
...
</service>
</service>
現在你唯一需要的是處理的ServiceHost自動創建。這裏是我的示例代碼:
class Program
{
static void Main(string[] args)
{
List<ServiceHost> hosts = new List<ServiceHost>();
try
{
var section = ConfigurationManager.GetSection("system.serviceModel/services") as ServicesSection;
if (section != null)
{
foreach (ServiceElement element in section.Services)
{
var serviceType = Type.GetType(element.Name);
var host = new ServiceHost(serviceType);
hosts.Add(host);
host.Open();
}
}
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
}
finally
{
foreach (ServiceHost host in hosts)
{
if (host.State == CommunicationState.Opened)
{
host.Close();
}
else
{
host.Abort();
}
}
}
}
}
太棒了!那正是我失蹤的那一塊。我不確定如何遍歷配置來實例化服務。對不起,我的問題太模糊了。我不太確定如何說出它。 – djmc 2010-09-18 10:58:38