मेरे पास 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");
}
}
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 कुकीज़ का उपयोग नहीं कर रहे हैं (ताकि कोई उपयोगकर्ता कुकीज़ को इंजेक्ट कर सके)।
संबंधित सवाल
नए सवाल
asp.net
ASP.NET एक Microsoft वेब अनुप्रयोग विकास ढांचा है जो प्रोग्रामर को गतिशील वेब साइटों, वेब अनुप्रयोगों और वेब सेवाओं के निर्माण की अनुमति देता है। प्रोजेक्ट प्रकार टैग के साथ संयोजन के रूप में इस टैग का उपयोग करना उपयोगी है। [asp.net-mvc], [asp.net-webforms], या [asp.net-web-api]। ASP.NET Core के बारे में प्रश्नों के लिए इस टैग का उपयोग न करें - इसके बजाय [asp.net-core] का उपयोग करें।