#.net #wcf
#.net #wcf
Вопрос:
ASP.Net MVC3
В моих базовых контроллерах я использую Initialize
/ Dispose
методы для создания / удаления моего ADO.NET подключение.
WCF
Могу ли я что-то подобное в WCF? Я использую свой собственный ServiceHostFactory
и было бы неплохо, если бы это было возможно с его помощью или пользовательским ServiceHost
.
Ответ №1:
Я нашел решение. Пожалуйста, напишите, есть ли вариант получше.
а) Реализовать 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();
}
б) Добавьте его с помощью web.config или программно в ServiceHost
:
foreach (ChannelDispatcher chDisp in ChannelDispatchers)
{
foreach (EndpointDispatcher epDisp in chDisp.Endpoints)
{
epDisp.DispatchRuntime.MessageInspectors.Add(myMessageInspector);
}
}