मेरे पास Asp.Net में एक एप्लिकेशन है और एक बटन के एक क्लिक पर इसे एक और मैपिंग एप्लिकेशन लॉन्च करना चाहिए। उस एप्लिकेशन में उपयोगकर्ता के क्रेडेंशियल जैसे उपयोगकर्ता नाम और ईमेल की आवश्यकता होती है। तो, मैं एक कुकी सेट करने और उस एप्लिकेशन में कुकी के डोमेन को ठीक करने का प्रयास कर रहा था लेकिन मैं उस एप्लिकेशन में कुकी नहीं देख पा रहा हूं। मुझे सच में यकीन नहीं है कि क्या गलत हो रहा है या अगर मैंने कुकी में कुछ गलती की है।

         MembershipUser usr = Membership.GetUser();
    Guid newUserId = (Guid)usr.ProviderUserKey;
    HttpCookie SampleCookie = new HttpCookie("UserInfo");
    Response.Cookies["UserInfo"]["UserName"] = usr.UserName;
    Response.Cookies["UserInfo"]["Email"] = usr.Email;
    SampleCookie.Expires = DateTime.Now.AddDays(1);
    Response.Cookies.Add(SampleCookie);
    SampleCookie.Domain = "http://157.182.212.204/MAP";

मदद के लिए एक बार फिर धन्यवाद।

एमएपी आवेदन के लिए कोड:

          function Get_Cookie( check_name ) {
            // first we'll split this cookie up into name/value pairs
            // note: document.cookie only returns name=value, not the other components

            var a_all_cookies = document.cookie.split( ';' );
            var a_temp_cookie = '';
            var cookie_name = '';
            var cookie_value = '';
            var b_cookie_found = false; // set boolean t/f default f

            for ( i = 0; i < a_all_cookies.length; i++ )
            {
                // now we'll split apart each name=value pair
                a_temp_cookie = a_all_cookies[i].split( '=' );


                // and trim left/right whitespace while we're at it
                cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

                // if the extracted name matches passed check_name
                if ( cookie_name == check_name )
                {
                    b_cookie_found = true;
                    // we need to handle case where cookie has no value but exists (no = sign, that is):
                    if ( a_temp_cookie.length > 1 )
                    {
                        cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
                    }
                    // note that in cases where cookie is initialized but no value, null is returned
                    return cookie_value;
                    break;
                }
                a_temp_cookie = null;
                cookie_name = '';
            }
            if ( !b_cookie_found )
            {
                return null;
            }
        }

        function Delete_Cookie( name, path, domain ) {
            if ( Get_Cookie( name ) ) document.cookie = name + "=" +
                    ( ( path ) ? ";path=" + path : "") +
                    ( ( domain ) ? ";domain=" + domain : "" ) +
                    ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
        }

                    alert(Get_Cookie("UserName"));                                                        

WVWRAPICt पृष्ठ RESET.aspx.cs के लिए कोड नीचे दिया गया है... यह वह जगह है जहां कुकी सेट की जा रही है

    using System;
    using System.Collections;
    using System.Configuration;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
  public partial class RESET_RESET : System.Web.UI.Page
  {
protected void Page_Load(object sender, EventArgs e)
{
            Menu Nav = Master.FindControl("NavigationMenu1") as Menu;
    MenuItemCollection Menu = Nav.Items;
    foreach (MenuItem item in Menu)
    {
        string name = item.Text.ToString();
        if (name == "ADMIN")
        {
            item.Enabled = User.IsInRole("Administrator");
        }
        if (name == "ICT")
        {
            item.Selected = true;
        }
        else
        {
            item.Selected = false;
        }
    }
}

protected void Button2_Click(object sender, EventArgs e)
{
    MembershipUser usr = Membership.GetUser();
    Guid newUserId = (Guid)usr.ProviderUserKey;
    HttpCookie SampleCookie = new HttpCookie("UserInfo");
    SampleCookie["UserName"] = usr.UserName;
    SampleCookie["Email"] = usr.Email;
    string connectionString =
  ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

    string checkSiteEventIDSQL = "Select * from UserProfiles WHERE UserId='" + newUserId + "'";

    using (SqlConnection myConnection1 = new SqlConnection(connectionString))
    {
        try
        {
            myConnection1.Open();
            SqlCommand myCommand1 = new SqlCommand(checkSiteEventIDSQL, myConnection1);
            SqlDataReader myReader = myCommand1.ExecuteReader();
            if (myReader.HasRows)
            {
                while (myReader.Read())
                {
                    string Agency = (myReader.GetValue(2)).ToString();
                    SampleCookie["Agency"] = Agency;

                }


            }
        }
        catch (Exception ex)
        {

        }
        finally
        {
            myConnection1.Close();
        }
    }
    SampleCookie.Expires = DateTime.Now.AddDays(1);
     SampleCookie.Domain = "157.182.212.204/MAP";
    // SampleCookie.Path = "/MAP";
    Response.Cookies.Add(SampleCookie);

   Response.Redirect("http://157.182.212.204/MAP/index.html");
}
}
3
user613037 10 अगस्त 2011, 20:48

1 उत्तर

सबसे बढ़िया उत्तर

जिस तरह से आप अपनी कुकी सेट कर रहे हैं उससे परेशानी के बारे में ... आप प्रतिक्रिया में कुकी नहीं ढूंढ पाएंगे जब तक कि आपने इसे प्रतिक्रिया में नहीं जोड़ा है। (और यदि आप इसे ढूंढ रहे हैं, तो आप उस कुकी को बाद में दो पंक्तियों में ओवर-राइट कर रहे हैं)। बस कुकी को सीधे संपादित करें और फिर कुकी जार में जोड़ें। साथ ही मेरा मानना ​​​​है कि एमएपी कुकी की पथ संपत्ति में होना चाहिए (सुनिश्चित नहीं है कि यह कितना बड़ा अंतर बनाता है)। जहां तक ​​​​मुझे पता है कि आप डोमेन में http नहीं चाहते हैं (फिर से, सुनिश्चित नहीं है कि ब्राउज़र संभालने के लिए पर्याप्त स्मार्ट है)।

MembershipUser usr = Membership.GetUser();
    Guid newUserId = (Guid)usr.ProviderUserKey;
    HttpCookie sampleCookie = new HttpCookie("UserInfo");
    sampleCookie["UserName"] = usr.UserName;
    sampleCookie["Email"] = usr.Email;
    sampleCookie.Expires = DateTime.Now.AddDays(1);
    sampleCookie.Domain = "157.182.212.204";
    sampleCookie.Path = "/MAP";
    Response.Cookies.Add(sampleCookie);

कुकीज़ को केवल उस डोमेन पर सेट किया जा सकता है जो वर्तमान FQDN का 'पूंछ' है। इसलिए यदि आपका वर्तमान FQDN 157.182.212.204 नहीं है, तो कुकी ब्राउज़र में सेट नहीं होगी। टेल से, उदाहरण के लिए, मेरा मतलब है कि http://overflow.acme.com ओवरफ्लो के लिए एक कुकी सेट कर सकता है। .com या acme.com, लेकिन fubar.acme.com या fubar.com के लिए नहीं।

मेरा अनुमान है कि यदि आपका आवेदन एमएपी आवेदन की तुलना में एक अलग एफक्यूडीएन पर है, तो आपको उपयोगकर्ता नाम और ई-मेल को मानचित्र एप्लिकेशन में पास करने के लिए एक अलग तरीका खोजने की आवश्यकता होगी (शायद मानचित्र एप्लिकेशन पर किसी पृष्ठ पर पोस्ट करें जो कुकी सेट कर सकता है और फिर उचित पृष्ठ पर रीडायरेक्ट कर सकता है?


कुछ और कोड पोस्ट करने के बाद अपडेट करें:

ये कोशिश करें:

   SampleCookie.Domain = "157.182.212.204";
   SampleCookie.Path = "/MAP";
   Response.Cookies.Add(SampleCookie);

   Response.Redirect("http://157.182.212.204/MAP/index.html", false);

प्रतिक्रिया पर गलत सेट करना। रीडायरेक्ट सेट कुकी शीर्षलेखों को आने का कारण बनना चाहिए। यदि आपके पास रेंडर इवेंट में कुछ है तो आपको अपने पेज में अन्य लॉजिक को शॉर्ट सर्किट करने की आवश्यकता हो सकती है

या बस सामान को एक क्वेरी स्ट्रिंग में पास करें। आप केवल HttpOnly कुकीज़ का उपयोग नहीं कर रहे हैं (ताकि कोई उपयोगकर्ता कुकीज़ को इंजेक्ट कर सके)।

1
John Hoven 17 अगस्त 2011, 19:13
मैंने कोशिश की लेकिन यह काम नहीं कर रहा है ... कोई अन्य विचार plzzzzz
 – 
user613037
11 अगस्त 2011, 07:41
इससे भी कोई फायदा नहीं हुआ। असल में मेरा आवेदन 157.182.212.204/WVWRAPICT पर है और एक बटन के एक क्लिक पर यह 157.182.212.204/MAP पर कॉल करता है, इसलिए मुझे लगता है कि यह वही FQDN है। मुझे यकीन नहीं है कि और क्या समस्या हो सकती है...कृपया मदद करें और यह पहली बार है जब मैं इस तरह का कुछ कर रहा हूं। आप से मिली मदद मेरे लिए सच में सराहनीय है....
 – 
user613037
11 अगस्त 2011, 19:44
@ user613037, कुकी का पथ निर्धारित न करें। यह काम करना चाहिए।
 – 
John Hoven
11 अगस्त 2011, 22:15
वास्तव में फिडलर वेब डीबगर स्थापित करें। प्रतिक्रिया में (/WVWRAPICT एप्लिकेशन के लिए) जो कुकी सेट करता है, सुनिश्चित करें कि आप एक सेट-कुकी प्रतिक्रिया (हेडर टैब के तहत) सेट कर रहे हैं। फिर देखें कि क्या कुकी को /MAPS एप्लिकेशन के अनुरोध पर भेजा जा रहा है (अनुरोध हेडर टैब में)।
 – 
John Hoven
11 अगस्त 2011, 23:57
मैंने पथ निर्धारित न करने की कोशिश की ... लेकिन कोई मदद नहीं मिली और मैंने फिडलर स्थापित करने का भी प्रयास किया लेकिन मुझे बाईं ओर के अनुप्रयोगों में अपना आवेदन नहीं दिख रहा है। सुनिश्चित नहीं है कि इसका उपयोग कैसे किया जाए ... लेकिन यह वास्तव में निराशाजनक है कि सब कुछ करने के बाद भी यह काम नहीं कर रहा है .... कृपया मदद करें ...
 – 
user613037
12 अगस्त 2011, 00:25