我想为我的IIS托管服务设置一些初始化代码.我读过这篇文章,它说(其中一个变体):
通过从ServiceHost类型派生,可以实现受保护的方法ServiceHostBase.InitializeRuntime。
我的问题是:我可以向IIS提供我自己的自定义ServiceHost类型吗?
发布于 2013-10-22 06:11:22
正如本文所建议的,您可以向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。在本文中,他们使用它来记录运行服务的虚拟目录。
发布于 2013-10-22 06:47:37
另一种方法是通过Web.config文件中没有文件的激活来实现这一点。在<system.serviceModel>部分中,添加以下内容:
<serviceActivations>
<add relativeAddress="Service.svc"
service="SomeNamespace.Service1"
factory="SomeNamespace.MyServiceHostFactory"/>
</serviceActivations>这使您可以在IIS中承载服务,而不需要物理.svc文件。不过,这是一个WCF 4.0+特性。
https://stackoverflow.com/questions/19509965
复制相似问题