2011-05-26 13 views
16

हमें अभी एक नया विंडोज 2008 आर 2 सर्वर मिला है और मैं रेजर व्यू इंजन के साथ आईआईएस 7.5 में एक एमवीसी 3 साइट स्थापित करने की कोशिश कर रहा हूं। जब मैं डिफ़ॉल्ट मार्ग तक पहुंचता हूं तो मुझे एक अजीब त्रुटि मिल रही है।लेआउट पेज "{path}" नहीं मिला

लेआउट पेज "~/दृश्य/साझा/_Layout.cshtml" कर सकता निम्नलिखित पथ पर नहीं पाया जा: "~/दृश्य/साझा/_Layout.cshtml"।

यह अजीब है, क्योंकि मैं स्पष्ट रूप से ऐसा तरह /views/home/index.cshtml के भीतर से लेआउट सेट:

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

मैं 100% निश्चित है कि /views/shared/_layout.cshtml फाइल सिस्टम में मौजूद है हूँ। यहां एक स्क्रीनशॉट है।

enter image description here

अगर मैं मेरे विचार से Layout = "~/Views/Shared/_Layout.cshtml"; निकालने के लिए, पेज सभी अपने आप में (_Layout.cshtml से कोड के किसी भी बिना) /home/index.cshtml की सामग्री को बाहर प्रस्तुत करना होगा। मैंने _ViewStart.cshtml का उपयोग कर लेआउट सेट करने का भी प्रयास किया है।

कोई भी जानता है कि क्यों एमवीसी लेआउट फ़ाइल को "ढूंढने" में सक्षम नहीं होगा? विज़ुअल स्टूडियो के लिए अंतर्निहित वेब सर्वर में चलते समय यह वेबसाइट पूरी तरह से ठीक काम करती है।

यहाँ मेरी स्टैक ट्रेस है:

[HttpException (0x80004005): The layout page "~/Views/Shared/_Layout.cshtml" could not be found at the following path: "~/Views/Shared/_Layout.cshtml".] 
    System.Web.WebPages.WebPageExecutingBase.NormalizeLayoutPagePath(String layoutPage) +204956 
    System.Web.WebPages.WebPageBase.PopContext() +150 
    System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +384 
    System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +33 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +784900 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +265 
    System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +784976 
    System.Web.Mvc.Controller.ExecuteCore() +159 
    System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +335 
    System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +62 
    System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +20 
    System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +54 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +453 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +371 

उत्तर

21

ऐसा लगता है कि आप शायद एक अनुमतियाँ मुद्दा है। आपके द्वारा दी गई जानकारी के साथ, यह _Layout.cshtml फ़ाइल को खोजने में सक्षम नहीं होने का सबसे अधिक संभावित कारण है।

सर्वर 2008 और आईआईएस 7 के साथ, एप्लिकेशन पूल की अपनी पहचान एसीएल (नामित आईआईएस ऐपपूल {ऐप पूल नाम}) के लिए उपयोग की जाती है, और इन पहचानों को आईआईएस_आईयूएसआरएस समूह का हिस्सा बनाया जाता है। साथ ही, आपकी डिफ़ॉल्ट inetpub/wwwroot निर्देशिका में IIS_ISRS समूह के लिए पढ़ने की अनुमति होगी। इसलिए, अगर आपको अनुमति की आवश्यकता नहीं मिल रही है, तो मुझे लगता है कि ऐप पूल वास्तव में सही पहचान के साथ नहीं चल रहा है।

अज्ञात प्रमाणीकरण उपयोगकर्ता पहचान की सेटिंग एक पहचान गलत हो सकती है। साइट (या पूरे सर्वर) के लिए प्रमाणीकरण नियंत्रण में जाएं और अनुप्रयोग पूल पहचान के रूप में चलाने के लिए अनाम प्रमाणीकरण नियम संपादित करें।

यह अनुमान का एक सा है, लेकिन यह this fellow had nearly the exact same issue लग रहा था।

IIS Anonymous Authentication user identity screen

+0

डिंग डिंग डिंग! धन्यवाद। – jessegavin

+0

लॉल्ज़, कोई जांच नहीं। ;-) –

+0

मेरा/साझा विचार फ़ोल्डर बिल्कुल नहीं, विचारों को खोज रहा है? – Maslow

2

qbantek के रूप में पाया जाता है, यह मेरे लिए _layout.cshtml फ़ाइल निर्माण कार्रवाई से संबंधित था कोई नहीं पर सेट किया जा रहा।

कारण यह किसी के लिए सेट नहीं किया गया था कि मैंने एक खाली एमवीसी परियोजना टेम्पलेट के साथ शुरू किया और मैन्युअल रूप से _layout.cshtml फ़ाइल को प्रोजेक्ट में जोड़ा।

इतना सबक सीखा, जब आप एक खाली प्रोजेक्ट टेम्पलेट से शुरू करते हैं, और आप मैन्युअल रूप से लेआउट फ़ाइल जोड़ते हैं, तो आपको मैन्युअल रूप से बिल्ड एक्शन भी सेट करना होगा।

0

यह समस्या कभी-कभी सुरक्षा अनुमति के बारे में हो सकती है। आप सुनिश्चित करते हैं कि फ़ोल्डर/फ़ाइल में पढ़ने/लिखने की अनुमति है।

0

मेरी समस्या थी .suo फ़ाइल में पुरानी फ़ाइलपैथ थी। मैंने वीएस बंद कर दिया, मेरी सुओ फ़ाइल हटा दी, वीएस फिर से खोला, और यह ठीक काम करता है।

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