2010-10-06 8 views
16

आज मैंने एमवीसी 3 बीटा के साथ खेलना शुरू किया। डिफ़ॉल्ट MVC 3 टेम्पलेट से एक आवेदन पत्र के साथ शुरू,एएसपी.नेट एमवीसी बीटा प्राधिकृत विशेषता मुझे गलत कार्रवाई भेजती है

[Authorize] 
public ActionResult Secured() 
{ 
    ViewModel.Message = "This is secured area, only authenticated users should be here."; 
    return View(); 
} 

अब जब मैं सुरक्षित कार्रवाई करने के लिए नेविगेट करने के लिए मैं एक 404 पृष्ठ मिल जाने की कोशिश (इसके लिए एक दृश्य के साथ) घर नियंत्रक में कोई नया कार्य इस प्रकार के रूप में जोड़ा त्रुटि नहीं मिली।

यहां मेरे web.config से प्रमाणीकरण अनुभाग है।

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
</authentication> 

अगर मैं यह समझ सही अधिकृत विशेषता एक 401 अनधिकृत HTTP प्रतिसाद जो प्रमाणीकरण हैंडलर के द्वारा रोका जाना चाहिए में परिणाम और loginUrl करने के लिए मुझे रीडायरेक्ट करना चाहिए। खाता/लॉगऑन कार्रवाई के परिणामस्वरूप कौन सा होना चाहिए।

मेरा एमवीसी 2 एप्लिकेशन अपेक्षित काम करता है और मुझे खाता/लॉगऑन एक्शन में ले जाता है, क्या मुझे कुछ याद आ रहा है? या यह एमवीसी 3 बीटा में एक बग है?

+0

यह सिर्फ आप नहीं है - बस एक ही समस्या थी! –

उत्तर

10

ScottGu replies to a similar question on his blog कि यह स्पष्ट रूप से एक बग है। अपने <appSettings /> वेब अनुप्रयोग के रूट web.config फ़ाइल में अनुभाग के लिए

<add key="autoFormsAuthentication" value="false" /> 

:

वैकल्पिक हल इस प्रविष्टि जोड़ने के लिए है।

+0

धन्यवाद डेविड, मुझे खुशी है और लेवी एमवीसी 3 बीटा में एक बग खोजने में सक्षम थे :)। –

+2

मैं एमवीसी 3 आरटीएम का उपयोग कर रहा हूं और मुझे यह बग फसल फिर से मिल गया है और ऐप सेटिंग्स कुंजी वर्कअराउंड इसे ठीक नहीं करता है। पुन: पेश करने के लिए कदम: 1) नई एमवीसी 3 वेबसाइट जोड़ें (सभी "होम", "खाता" नियंत्रक सामग्री के साथ। 2) होम कंट्रोलर कक्षा में [अधिकृत करें] सेट करें। इस बिंदु पर, कोई समस्या नहीं है - web.config ठीक में जो कुछ भी है उसे रीडायरेक्ट करता है। हालांकि, अगर मैं 3) ऐप की रूट पर _ViewStart.cshtml फ़ाइल ले जाएं (इसलिए मेरे क्षेत्रों में सभी विचार बेस लेआउट का भी उपयोग करेंगे), तो मुझे 404 खाता/लॉगिन समस्या मिलती है। मुझे लगता है कि यह _ViewStart फ़ाइल के साथ उपजी है। उस सुविधा का उपयोग करते समय मुझे कई विचित्र चीजें मिली हैं। – tbehunin

+2

इस सेटिंग ने स्वयं ही समस्या को ठीक नहीं किया है; मुझे काम करने के लिए विंडोज प्रमाणीकरण के लिए जोड़ना था। –

15

यह आरटीएम साथ काम नहीं करता किसी भी अधिक

आप

मुद्दों web.config में appSettings को

<add key="loginUrl" value="~/Account/LogOn" /> 

जोड़ने की जरूरत है WebMatrix.WebData में ConfigUtil में है

private static string GetLoginUrl() 
{ 

    return ConfigurationManager.AppSettings[FormsAuthenticationSettings.LoginUrlKey] ?? FormsAuthenticationSettings.DefaultLoginUrl; 
} 



staticFormsAuthenticationSettings() 
{ 
    LoginUrlKey = "loginUrl"; 
    DefaultLoginUrl = "~/Account/Login"; 
} 
+0

समाधान के लिए धन्यवाद! –

+0

यह मेरे आवेदन को तय करता है। इस पर ध्यान दिलाने के लिए धन्यवाद। चीयर्स :) –

+2

इसके बजाय स्वीकार्य उत्तर बनना चाहिए! –

2

बिन निर्देशिका में WebMatrix * .dll को हटाने के बाद, सबकुछ ठीक है।

+1

मेरे पास एक एएसपी.नेट एमवीसी 3 प्रोजेक्ट था जो रेजर व्यू इंजन का उपयोग करके बनाया गया था। चूंकि हमारे उत्पादन सर्वर में एएसपी.नेट एमवीसी 3 स्थापित नहीं है, इसलिए मैंने तैनाती के दौरान बिन फ़ोल्डर में आवश्यक असेंबली (वेबमैट्रिक्स *। डीएल सहित) की प्रतिलिपि बनाई है। हमने हाल ही में एक एएसपी.नेट एमवीसी 3 वेबफॉर्म को इंजन ऐप को उत्पादन में तैनात किया है, इसलिए मैंने रेजर एप्लिकेशन से सभी असेंबली की प्रतिलिपि बनाई है, इसलिए मुझे इसे दो बार नहीं करना पड़ा। इसमें WebMatrix * .dll फ़ाइलें शामिल थीं। जैसे ही मैंने उन डीएलएल को अपने बीआईएन फ़ोल्डर से हटा दिया, मेरी सारी परेशानी दूर हो गई। वेबमैट्रिक्स डीएलएस को हटाने के लिए अंततः आप निष्कर्ष पर कैसे पहुंचे? –

0

एमवीसी 4 एक ही समस्या प्रदर्शित करता है। हालांकि MVC 4 पर प्रमाणीकरण मोड सही ढंग से, = "प्रपत्र" विन्यास फाइल में सेट है जैसे निम्नलिखित में, समस्या गायब हो जाता है:

<authentication mode ="Forms"> 
    <forms loginurl = "your login" timeout ="2880" slidingExpiration="true"> 
</authentication> 

यह मेरे लिए काम करता है। मोड निकालें और यह आपको परेशानी देता है।

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