ServiceStack — удаление IOC

Я использую funq ServiceStack, я пытаюсь удержать место, где IOC удаляется в конце запроса. В частности, для записей с областью видимости = ReuseScope.Request.

Я смотрю на метод RestHandler ProcessRequest, который вызывается непосредственно Asp.NET, и он заканчивается так:

(...)    
        if (doJsonp && !(response is CompressedResult))
                httpRes.WriteToResponse(httpReq, response, (callback + "(").ToUtf8Bytes(), ")".ToUtf8Bytes());
            else
                httpRes.WriteToResponse(httpReq, response);
        }
        catch (Exception ex)
        {
            if (!EndpointHost.Config.WriteErrorsToResponse) throw;
            HandleException(httpReq, httpRes, operationName, ex);
        }
    }

Я не вижу ссылок на утилизацию Funq. Что мне здесь не хватает? Спасибо


person Cristóvão    schedule 19.02.2014    source источник


Ответы (1)


Область действия контейнера аналогична области действия Singleton и удаляется только тогда, когда AppHost удален.

Ресурсы RequestScoped размещаются в ServiceStackHost.OnEndRequest()

Вы можете переопределить AppHost.Release(object instance) в своем AppHost, чтобы получать уведомления, когда ServiceStack освобождает ресурсы.

person mythz    schedule 19.02.2014
comment
Извините моя ошибка. Это был ReuseScope.Request Я ищу звонок. Где это срабатывает? Спасибо - person Cristóvão; 19.02.2014
comment
Обновленный ответ в ServiceStackHost.OnEndRequest() - person mythz; 19.02.2014
comment
@Blitzkrieg Нет, это невозможно, вызов обычно исходит из метода расширения EndRequest(), который вызывается из каждой известной точки выхода. - person mythz; 19.02.2014