在ASP.NET MVC中,我可以在Gloabal.asax
注册依赖项。它工作正常。
当我想创建一个WCF服务并注册一个容器的依赖项时,我在哪里注册IIS的依赖项?
在项目中,我没有看到全局asax有点启动文件。
答案 0 :(得分:0)
WCF服务与IIS正交。如果您在ASP.NET应用程序中托管服务,则应使用Global.asax
。如果您正在编写控制台应用程序 - 在Main方法中注册服务。在Windows服务的情况下,为此目的使用ServiceBase.OnStart方法。
答案 1 :(得分:0)
WCF是无国籍的。这意味着每次呼叫到达您的WCF服务时,它都会触发一个新的实例。我还需要在IIS中托管的WCF服务中初始化一些东西,我的解决方案是使用初始化类型的属性。我创建了我的属性:
public class InitializationBehavior : Attribute, IServiceBehavior
{
public InitializationBehavior()
{
}
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
}
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints,
BindingParameterCollection bindingParameters)
{
// <---- put your init stuff here
}
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
}
}
然后,您可以在服务的实施上拍打该属性:
[InitializationBehavior]
public class YouService: IYourService
{
// your WCF service
}
以下是使用IServiceBehavior提供的所有方法的好读物:
http://blogs.msdn.com/b/carlosfigueira/archive/2011/03/22/wcf-extensibility-iservicebehavior.aspx