lundi 18 mai 2015

Web API Controller get destroyed before async method returns

I am developing a Web api which is self hosted using OWIN and the controller creation is deligated to Castle Windsor container , based on the article from the link (http://ift.tt/1Ldmvry) All my API methods are asynchronous and I am using await calls inside injected objects as well , but it seems that my controller get released even before my async methods complete. Below is my controller creation code. I have even commented out the the controller release code.

public class TestCompositionRoot : IHttpControllerActivator { private readonly IDependencyManager _dpendencyManager;

    public POSCompositionRoot(IDependencyManager container)
    {
        _dpendencyManager = container;
    }

    public IHttpController Create(
        HttpRequestMessage request,
        HttpControllerDescriptor controllerDescriptor,
        Type controllerType)
    {
        var controller =
            (IHttpController)_dpendencyManager.Resolve(controllerType);

        //request.RegisterForDispose(
        //    new Release(
        //        () => _dpendencyManager.Release(controller)));

        return controller;
    }

    private sealed class Release : IDisposable
    {
        private readonly Action _release;

        public Release(Action release)
        {
            _release = release;
        }

        public void Dispose()
        {
            _release();
        }
    }
}




Aucun commentaire:

Enregistrer un commentaire