Я нашел решение. Пожалуйста, напишите, если есть лучший.
а) Реализация 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);
}
}