提供自定义服务主机
本文关键字:主机 服务 自定义 | 更新日期: 2023-09-27 18:36:17
我想为我的 IIS 承载的服务提供一些初始化代码。我已经读过这篇文章,它说(变体之一):
通过从服务主机类型派生,可以实现受保护的 方法ServiceHostBase.InitializeRuntime.
我的问题:是否可以向 IIS 提供自己的自定义服务主机类型?
如本文所示,您可以提供初始化服务主机的 IIS ServiceHostFactory
。
首先,在.svc
文件中定义工厂:
<%@ServiceHost Language="C#" Factory="SomeNamespace.MyServiceHostFactory" %>
然后创建工厂和宿主类:
class MyServiceHostFactory : ServiceHostFactory
{
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
return new MyServiceHost(serviceType, baseAddresses);
}
}
class MyServiceHost : ServiceHost
{
public MyServiceHost()
{
// initialize, add endpoints, behaviors, etc.
}
}
如果您愿意,也可以覆盖InitializeRuntime
。在本文中,他们使用它来记录运行服务的虚拟目录。
另一种方法是在 Web.config 文件中进行无文件激活。 在"<system.serviceModel>
"部分中,添加以下内容:
<serviceActivations>
<add relativeAddress="Service.svc"
service="SomeNamespace.Service1"
factory="SomeNamespace.MyServiceHostFactory"/>
</serviceActivations>
这使您能够在 IIS 中承载服务,而无需物理 .svc 文件。但是,这是 WCF 4.0+ 功能。