2013-07-02 5 views
4

В ApiController Действие Мне нужно закрыть соединение с базой данных, как только действие закончено.Метод APIController «Выполнено»?

Под контролем я переопределяю OnActionExecuted, чтобы выполнить это.

Как бы это сделать при действии ApiController?

Благодаря

ответ

6

Вы можете переопределить ExecuteAsync метод:

public override Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken) 
{ 
    return base 
     .ExecuteAsync(controllerContext, cancellationToken) 
     .ContinueWith(t => 
     { 
      // the controller action has finished executing, 
      // your custom code could come here ... 

      return t.Result; 
     }); 
} 
+0

Удивительный, спасибо! – Leo

+0

@Darin, где я могу найти filtercontext.Exception? using (_session) {if (_session == null) return; if (! _session.Transaction.IsActive) возвращение; if (controllerContext.Request.Exception! = Null ||! ModelState.IsValid) _session.Transaction.Rollback(); else _session.Transaction.Commit(); } – Haroon

+0

Я не хочу совершать транзакции, если есть ошибка в конвейерах .... controllerContext.Request.Exception недействителен, где я могу получить Исключение? – Haroon