2014-06-25 6 views
21

मैं इस पैकेज का उपयोग कर रहा मेरी WebAPI Owin आवेदन के साथ एकीकृत करने के लिए Autofac:WepApi 2 और Owin के साथ Autofac को एकीकृत कैसे करें?

https://www.nuget.org/packages/Autofac.WebApi2.Owin

और इस पोस्ट के बाद:

http://alexmg.com/owin-support-for-the-web-api-2-and-mvc-5-integrations-in-autofac/

Startup.cs में मेरे कोड इस तरह दिखता है:

 var config = new HttpConfiguration(); 

     IContainer container = EngineContext.InitializeEngine(); 

     var dependencyResolver = new AutofacWebApiDependencyResolver(container); 
     config.DependencyResolver = dependencyResolver; 

     app.UseAutofacMiddleware(container); 
     app.UseAutofacWebApi(config); 

     WebApiConfig.Register(config); 
     app.UseWebApi(config); 

हालांकि जिस भी तरह से मैं इसे स्पिन करता हूं, पुनर्व्यवस्थित करता हूं कोड या जो भी हो, Autofac बस कुछ भी हल करने में सक्षम नहीं है। ओविन से पहले मेरी ग्लोबल.एक्सएक्स विधि ठीक काम कर रही थी:

protected void Application_Start() 
    { 
     IContainer container = EngineContext.InitializeEngine(); 

     var dependencyResolver = new AutofacWebApiDependencyResolver(container); 
     GlobalConfiguration.Configuration.DependencyResolver = dependencyResolver; 

     GlobalConfiguration.Configure(WebApiConfig.Register); 
    } 

मुझे क्या याद आ रही है?

धन्यवाद

उत्तर

21

ठीक है,

मैं यह पता लगा। ऑटोफैक ओविन एकीकरण वास्तव में एक ओविन लिफ्टटाइस्को बनाता है, जो पूरे ओविन पाइपलाइन के माध्यम से उपलब्ध है, इस प्रकार मिडलवेयर पर उपलब्ध है और इस लाइफटाइमकोप को HttpRequestMessage तक बढ़ाता है। यह AutofacWebRequest टैग के साथ चिह्नित लाइफटाइमस्कोप है।

तो सभी पिछले वेबएपी एकीकरण कोड को अभी भी एप्लिकेशन स्टार्टअप पर प्रदर्शन करने की आवश्यकता है। मैं शामिल किया है:

var dependencyResolver = new AutofacWebApiDependencyResolver(container); 
    config.DependencyResolver = dependencyResolver; 

लेकिन याद किया:

var builder = new ContainerBuilder(); 
builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).InstancePerRequest(); 
EngineContext.Initialize विधि है, जो बिल्डर के माध्यम से सभी पंजीकरण करता है में

यहाँ आप कैसे WebAPI, जो स्पष्ट रूप से Owin के मामले में भी किया जाना चाहिए साथ Autofac को एकीकृत करने के बारे में अधिक जानकारी पा सकते हैं:

https://code.google.com/p/autofac/wiki/WebApiIntegration

मुझे आशा है कि यह उपयोगी है!

+0

क्या आपने ग्लोबल कॉन्फ़िगरेशन का उपयोग करने का प्रयास किया था। "Var config = new HttpConfiguration();" के बजाय कॉन्फ़िगरेशन ? GlobalConfiguration.Configuration मेरी समस्या फिक्स्ड। – BrunoMartinsPro

संबंधित मुद्दे