2013-01-02 22 views
11
[assembly: WebActivator.PreApplicationStartMethod(typeof(MyApp.App_Start.StructureMapMvc), "Start")] 

namespace MyApp.App_Start 
{ 
    public static class StructureMapMvc 
    { 
     public static void Start() 
     { 
      var container = IoC.Initialize(); 
      DependencyResolver.SetResolver(new SmDependencyResolver(container)); 
     } 
    } 
} 

यहां मेरा कोड है जो global_asax में Application_start से पहले चलाना है। मैं अपनी वेब प्रोजेक्ट को एमवीसी 3 से एमवीसी 4 में अपग्रेड कर रहा था। इसलिए, उस प्रक्रिया में, मैंने नेमस्पेस में गलती की। यह मेरे नामस्थान को ठीक करने से पहले काम कर रहा था। अब यह काम नहीं करता है। मैं आईआईएस/फ्लश डीएनएस/पुनर्निर्मित समाधान रीसेट/सी: \ विंडोज \ माइक्रोसॉफ्ट.NET \ Framework64 \ versionxxxxxx ... \ अस्थायी ASP.NET फ़ाइलें \ रूट में अस्थायी .net फ़ाइलों को हटा दिया। कुछ भी काम नहीं किया। क्या मुझसे कोई चूक हो रही है? आरंभ() विधि में मेरी सभी संरचना मानचित्र सामग्री निर्भरता संकल्प सामग्री है। तो, मैं इसे समझने के बिना आगे नहीं बढ़ सकता। इतने घंटों तक समस्या का निदान करने का प्रयास किया और मुझे मदद चाहिए।WebActivator.PreAplicationStartMethod काम नहीं करता

उत्तर

20

अपने कोड एक वेब साइट परियोजना (यानी, App_Code फ़ोल्डर से कम) में है, तो आप PreApplicationStartupMethod का उपयोग नहीं कर सकते हैं! आप इसके बजाय PostApplicationStartupMethod का उपयोग कर सकते हैं। ग्लोबल.एएसएक्स * एप्लिकेशन_स्टार्ट * से पहले "प्री" विधि निष्पादित होती है, जबकि "पोस्ट" निष्पादित होती है।

मैंने इसे समझने से पहले एक अच्छा घंटा या दो बर्बाद कर दिया, तो उम्मीद है कि इससे किसी और को इससे बचने में मदद मिलेगी!

0
WebActivator संस्करण 1.5.3 के साथ

, MyClass.cs.pp फ़ाइल सिर्फ App_Start फ़ोल्डर, में रहते हैं नहीं कर सकते लेकिन लक्ष्य परियोजना के App_Start में तब्दील फ़ाइल बनाने के लिए nuget install के लिए क्रम में content\App_Start फ़ोल्डर निवासी होने चाहिए।

यह अनियंत्रित है, जहां तक ​​मैं कह सकता हूं।

नोट: यह समाधान इतने लंबे समय के रूप में काम करने के लिए होने वाले .nupkg एक पारंपरिक फाइल सिस्टम दृष्टिकोण का उपयोग कर nuget pack का उपयोग कर बनाया गया था लगता है, लेकिन नहीं जब nuget pack कि एक विशिष्ट .csproj फ़ाइल को लक्षित करता है का उपयोग कर।

0

मेरा अनुभव करता है, तो अपनी परियोजना सेटिंग्स (.csproj.user या .vbproj.user में) की स्थापना <StartAction>NoStartPage</StartAction> है ठीक <StartAction>CurrentPage</StartAction> करने के लिए इसे स्थापित करने के लिए है और यह तो अगली बार जब आप डिबग काम करना चाहिए कि WebActivator काम नहीं करेगा है।

चूंकि यह .user फ़ाइल (जो आमतौर पर svn में शामिल नहीं है) में यह निर्धारित करना मुश्किल है कि यह कुछ देव वातावरण पर क्यों काम करता है लेकिन दूसरों को नहीं।

0

मेरे लिए, NuGet.Server डाउनलोड का उपयोग करके एक निजी NuGet रिपोजिटरी बनाते समय मेरी समस्या थी (यह WebActivatorEx PreAplicationStartMethod विशेषता का उपयोग करता है)।

मैंने जो किया वह एक खाली वेब साइट प्रोजेक्ट बना था। यह गलत है: इसे एक खाली वेब एप्लिकेशन प्रोजेक्ट होना आवश्यक है। एक बार जब मैंने खाली वेब एप्लिकेशन बनाया और NuGet को फिर से इंस्टॉल किया। सर्वर सब ठीक काम किया।

तो: यदि आपने एक खाली वेब साइट प्रोजेक्ट का उपयोग किया है, तो हो सकता है कि आपको समस्या क्यों हो रही हो। इसके बजाय एक खाली वेब अनुप्रयोग परियोजना का उपयोग करें।

मुझे लगता है कि खाली वेब साइट प्रोजेक्ट में कुछ एएसपी.नेट "गोंद" गायब है जो System.Web.PreApplicationStartMethod (जैसा कि WebActivatorEx द्वारा उपयोग किया जाता है) को काम करने में सक्षम बनाता है। हो सकता है कि कोई ऐसा व्यक्ति जो विवरणों के बारे में कुछ और जानता हो, यह समझा सकता है कि यह क्यों है?

0

मेरी समस्या दो गुना थी।

1) से पहले नहीं

प्रकार

2) नाम स्थान के अंदर विशेषता रखने, का पूर्ण पथ की घोषणा नहीं एक बार मैं इन यह काम के दोनों तय की।

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(MyApp.Api.Controllers.MyController), "AutoMapperStart")] 


namespace MyApp.Api.Controllers 
{ 

    public class MyController : ApiController 
    { 
     public static void AutoMapperStart() 
     { 
      MyMapperConfig.DefineMappings(); 
     } 
    } 
} 
+0

तो एक उपयोग कथन आपके लिए काम नहीं करता है? – eaglei22

+0

भले ही यह फिक्स मेरे लिए काम नहीं करता .. – eaglei22

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