.net 与WCF中的Initialize/Dispose等效

.net 与WCF中的Initialize/Dispose等效,.net,wcf,.net,Wcf,ASP.Net MVC3 在我的基本控制器中,我使用Initialize/Dispose方法来创建/Dispose我的ADO.NET连接 WCF 我可以在WCF中使用类似的功能吗?我正在使用我自己的ServiceHostFactory,如果可以使用它或自定义ServiceHost我找到了一个解决方案,那就太好了。如果有更好的,请发帖 a) 在类中实现IDispatchMessageInspector: public object AfterReceiveRequest(ref Messa

ASP.Net MVC3

在我的基本控制器中,我使用
Initialize
/
Dispose
方法来创建/Dispose我的ADO.NET连接

WCF


我可以在WCF中使用类似的功能吗?我正在使用我自己的
ServiceHostFactory
,如果可以使用它或自定义
ServiceHost
我找到了一个解决方案,那就太好了。如果有更好的,请发帖

a) 在类中实现IDispatchMessageInspector:

    public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
    {
        // creates a new database connection
        return SessionFactory.Create();
    }

    public void BeforeSendReply(ref Message reply, object correlationState)
    {
        // closes the connection
        var session = (Session) correlationState;
        if (session != null)
            session.Dispose();
    }
b) 使用web.config或以编程方式在
ServiceHost
中添加它:

        foreach (ChannelDispatcher chDisp in ChannelDispatchers)
        {
            foreach (EndpointDispatcher epDisp in chDisp.Endpoints)
            {
                epDisp.DispatchRuntime.MessageInspectors.Add(myMessageInspector);
            }
        }