WCF注册IIS的依赖项

时间:2014-07-10 15:42:09

标签: c# wcf dependency-injection

在ASP.NET MVC中,我可以在Gloabal.asax注册依赖项。它工作正常。

当我想创建一个WCF服务并注册一个容器的依赖项时,我在哪里注册IIS的依赖项?

在项目中,我没有看到全局asax有点启动文件。

2 个答案:

答案 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