Эквивалент инициализации / утилизации в WCF - PullRequest
0 голосов
/ 26 апреля 2011

ASP.Net MVC3

В моих базовых контроллерах я использую Initialize / Dispose методы для создания / удаления моего соединения ADO.NET.

1010 * WCF *

Могу ли я что-нибудь подобное в WCF? Я использую свой собственный ServiceHostFactory, и было бы неплохо, если бы это было возможно, используя его или пользовательский ServiceHost.

1 Ответ

0 голосов
/ 26 апреля 2011

Я нашел решение. Пожалуйста, напишите, если есть лучший.

а) Реализация 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);
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...