Search code examples
asp.net-mvcautofac

How to Configur Autofac For webapi


i am working on a project which work on mobile as well as web platform . i am using autofac for dependency resolver which is working fine for web but constructor parameter in webapi controller not initilize

i tried

http://docs.autofac.org/en/latest/register/parameters.html plz help

region [Custom Response]

    public class DocumentDownloadResult : IHttpActionResult
    {
        readonly MemoryStream bookStuff;
        readonly string PdfFileName;
        HttpRequestMessage httpRequestMessage;
        HttpResponseMessage httpResponseMessage;
        public DocumentDownloadResult(MemoryStream data, HttpRequestMessage request, string filename)
        {
            bookStuff = data;
            httpRequestMessage = request;
            PdfFileName = filename;
        }
        public System.Threading.Tasks.Task<HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken)
        {
            httpResponseMessage = httpRequestMessage.CreateResponse(HttpStatusCode.OK);
            httpResponseMessage.Content = new StreamContent(bookStuff);
            //httpResponseMessage.Content = new ByteArrayContent(bookStuff.ToArray());  
            httpResponseMessage.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
            httpResponseMessage.Content.Headers.ContentDisposition.FileName = PdfFileName;
            httpResponseMessage.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");

            return System.Threading.Tasks.Task.FromResult(httpResponseMessage);
        }
    }
    public class DocumentPrintResult : IHttpActionResult
    {
        MemoryStream bookStuff;
        readonly string PdfFileName;
        HttpRequestMessage httpRequestMessage;
        HttpResponseMessage httpResponseMessage;
        public DocumentPrintResult(MemoryStream data, HttpRequestMessage request, string filename)
        {
            bookStuff = data;
            httpRequestMessage = request;
            PdfFileName = filename;
        }
        public System.Threading.Tasks.Task<HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken)
        {
            httpResponseMessage = httpRequestMessage.CreateResponse(HttpStatusCode.OK);
            httpResponseMessage.Content = new StreamContent(bookStuff);
            httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
            httpResponseMessage.Content.Headers.ContentLength = bookStuff.Length;
            ContentDispositionHeaderValue contentDisposition = null;
            if (ContentDispositionHeaderValue.TryParse("inline; filename=" + PdfFileName, out contentDisposition))
            {
                httpResponseMessage.Content.Headers.ContentDisposition = contentDisposition;
            }
            return System.Threading.Tasks.Task.FromResult(httpResponseMessage);
        }
    }
    #endregion

Solution

  • Plz Try This...

    var builder = new ContainerBuilder();   
    builder.Update(container);
     var webApiResolver = new Autofac.Integration.WebApi.AutofacWebApiDependencyResolver(container);
            System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;