2010-03-31 20 views
5

मैं अपलोडिफ़ाई के साथ किसी समस्या में भाग रहा हूं और मुझे उम्मीद है कि कोई मदद कर सकता है। मैंने अपने ऐप में अपलोडिफ़ाई डाली है और सभी काम dev में ठीक हैं (वीएस वेब सर्वर का उपयोग करके)। जब तक मैंने ऐप को अपने परीक्षण वातावरण में तैनात नहीं किया, तब तक सभी ने ठीक काम किया और जांच की जो एकीकृत विंडोज प्रमाणीकरण का उपयोग करता है।अपलोड करें (फ्लैश फ़ाइल अपलोड) और एकीकृत विंडोज प्रमाणीकरण

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

जब यह शुरू हुआ, तो मैंने फिडलर को स्पिन करने का फैसला किया और देखें कि क्या हो रहा था। लेकिन अनुमान लगाओ, जब कभी फिडलर इस मुद्दे को चला रहा है तो ऐसा नहीं होता है।

दुर्भाग्यवश मैं ऐड चलाने के लिए फिडलर को एक पुनर्मूल्यांकन नहीं चला सकता। इसलिए किसी के पास कोई विचार है। मुझे पता है कि फॉर्म प्रमाणीकरण का उपयोग करते समय अपलोडिफ़/फ्लैश के साथ कुछ समस्याएं हैं, लेकिन मुझे नहीं लगता कि वे एकीकृत विंडोज प्रमाणीकरण में ले गए हैं।

उत्तर

2

मैंने यह पृष्ठ देखा और मैंने लगभग छोड़ दिया लेकिन फिर मैं इस article पर क्रेग से प्लुरलसाइट पर भाग गया। जिसने मुझे आईआईएस के बजाय एएसपी.Net से 401 लौटने का विचार दिया, यही कारण है कि आईआईएस में अज्ञात प्रमाणीकरण सक्षम है।

इस मुद्दे को हल करने के लिए यहां दिए गए कदम हैं।

चरण 1: आईआईएस में अनाम प्रमाणीकरण और विंडोज एथ सक्षम करें।

चरण 2: अपने Global.asax.cs लिए इस कोड को जोड़े
क्रेडिट/करने के लिए धन्यवाद:Uploadify (Session and authentication) with ASP.NET MVC
नोट: मेरी संस्करण में केवल पोस्ट अनुरोध विशेष तर्क का उपयोग के बाद से मैं केवल के लिए इस कोड चाहते हैं अपलोड करने के लिए काम करें। दूसरे शब्दों में मैं जीईटी अनुरोधों के लिए कोड हटा देता हूं। अगर आप जीईटी का समर्थन करना चाहते हैं तो ऊपर दिए गए लिंक पर एक नज़र डालें।

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    /* we guess at this point session is not already retrieved by application so we recreate cookie with the session id... */ 
    try 
    { 
     string session_param_name = "ASPSESSID"; 
     string session_cookie_name = "ASP.NET_SessionId"; 

     if (HttpContext.Current.Request.Form[session_param_name] != null) 
     { 
      UpdateCookie(session_cookie_name, HttpContext.Current.Request.Form[session_param_name]); 
     } 

    } 
    catch 
    { 
    } 

    try 
    { 
     string auth_param_name = "AUTHID"; 
     string auth_cookie_name = FormsAuthentication.FormsCookieName; 

     if (HttpContext.Current.Request.Form[auth_param_name] != null) 
     { 
      UpdateCookie(auth_cookie_name, HttpContext.Current.Request.Form[auth_param_name]); 
      return; // this is an uploadify request....get out of here. 
     } 

    } 
    catch 
    { 
    } 

    // handle the windows authentication while keeping anonymous turned on in IIS. 
    // see: https://stackoverflow.com/questions/2549914/uploadify-flash-file-upload-integrated-windows-authentication 

    if (Request.ServerVariables["LOGON_USER"].Length == 0) // They haven't provided credentials yet 
    { 
     Response.StatusCode = 401; 
     Response.StatusDescription = "Unauthorized"; 
     Response.End(); 
     return; 
    } 

    FormsAuthentication.SetAuthCookie(Request.ServerVariables["LOGON_USER"], true); 

} 

private void UpdateCookie(string cookie_name, string cookie_value) 
{ 
    HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(cookie_name); 
    if (null == cookie) 
    { 
     cookie = new HttpCookie(cookie_name); 
    } 
    cookie.Value = cookie_value; 
    HttpContext.Current.Request.Cookies.Set(cookie); 
} 

चरण 3: फ़ॉर्म की ऑथ कुंजी और सत्र कुंजी को शामिल करने के लिए जावास्क्रिप्ट को आमंत्रित करने के लिए अपलोड करें।

<script> 
    var auth = "<% = Request.Cookies[FormsAuthentication.FormsCookieName]==null ? string.Empty : Request.Cookies[FormsAuthentication.FormsCookieName].Value %>"; 
    var ASPSESSID = "<%= Session.SessionID %>"; 

    $("#uploadifyLogo").uploadify({ 
     ... 
     scriptData: { ASPSESSID: ASPSESSID, AUTHID: auth } 
    }); 

चरण 4: अद्यतन अपने web.config

<system.web> 
    ... 
    <authentication mode="Forms"> 
     <forms defaultUrl="/" /> 
    </authentication> 
    ... 
+0

मैं ओपी की तरह ठीक उसी समस्या आ रही है और मैं अपने समाधान करने की कोशिश की, लेकिन मैं यह काम करने के लिए नहीं मिल सकता है। किसी कारण से Request.ServerVariables ["LOGON_USER"] हमेशा खाली रहता है। कोई सुझाव? – Simon

+0

आईआईएस में अज्ञात प्रमाणीकरण और विंडोज प्रमाणीकरण दोनों सक्षम हैं? –

+0

मुझे पता है कि टिप्पणी करने/प्रश्न पूछने में देर हो चुकी है, लेकिन इसका मतलब है कि अपलोडिफ़ाई और विंडोज प्रमाणीकरण का उपयोग करने के लिए समाधान को विंडोज प्रमाणीकरण का उपयोग करने की आवश्यकता नहीं है? – bzarah

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