У меня, похоже, много проблем, читая куки из старого классического веб-приложения asp. мы медленно обновляем это веб-приложение до .net. Файл cookie содержит некоторую пользовательскую информацию, которая также используется, чтобы сообщить приложению, что человек успешно прошел аутентификацию.asp.net read classic asp cookie
Я стараюсь читать так:
Response.Cookies["mycookie"].Path = "/";
string strCookieText = Request.Cookies["mycookie"].Value;
Иногда, кажется, приносит данные обратно в другое время нет, но это не соответствует. Я также попытался применить тот же путь, когда cookie создан на классической стороне asp, но это, казалось, действительно запустило ключ в старом приложении, так как тогда классическая сторона asp имела множество проблем с чтением и поиском файла cookie.
Итак, я решил, что создам функцию, которая будет читаться на классической странице asp, цель которой - прочитать cookie. Мне совсем не нравится этот метод, но на данный момент у меня нет идей. Проблема здесь в том, что она всегда возвращается пустой. Я знаю, что есть данные, однако, через скрипач, и если я пойду на фактический сайт и попаду на страницу. Я предполагаю, что это, должно быть, еще одна проблема, возможно, или что-то в этом роде, когда я пытаюсь прочитать ее через .net, она ничего не находит.
вот мой Funciton, что пробует читать страницу:
public CCookie validateCookie()
{
CCookie ckCCookie = new CCookie();
string strReadCookiePage = "";
strReadCookiePage = GetHtmlPage("HTTP://MYPAGE/readcookie.asp");
string[] strCarriageReturn = { "\n" }; //we are splitting on this character
string[] strPageSplit;
strPageSplit = strReadCookiePage.Split(strCarriageReturn, StringSplitOptions.RemoveEmptyEntries);
string strCookieLength = "-2";
foreach (string strValue in strPageSplit)
{
if (strCookieLength == "-1")
{
break;
}
if (strValue.Contains("<div id='arrayLength'>"))
{
strCookieLength = findStringValue(strValue, "<div id='arrayLength'>", "</div>");
}
if (strValue.Contains("<div id='VendorID'>"))
{
ckCCookie.UserVendorID = findStringValue(strValue, "<div id='VendorID'>", "</div>");
}
if (strValue.Contains("<div id='UserID'>"))
{
ckCCookie.UserID = Convert.ToInt64(findStringValue(strValue, "<div id='UserID'>", "</div>"));
}
if (strValue.Contains("<div id='LogonType'>"))
{
ckCCookie.LogonType = findStringValue(strValue, "<div id='LogonType'>", "</div>");
}
if (strValue.Contains("<div id='UserType'>"))
{
ckCCookie.UserType = findStringValue(strValue, "<div id='UserType'>", "</div>");
}
}
//not able to validate the cookie
if (strCookieLength == "-1")
{
//Response.Redirect("REDIRECT TO HAVE THEM LOG IN");
}
return ckCCookie;
}
почему это не рабочая вы думаете, ребята. Мне нужно, чтобы это постоянно работало. Я знаю, что могу сохранить состояние в dbase, но я не хочу этого делать так, как я думаю, я должен уметь читать эту вещь.
любые идеи или мысли о том, как сделать эту работу?
Они должны быть в состоянии прочитать его, если это обычный файл cookie (не файл cookie сеанса), независимо от приложения, если нет, например, атрибута 'domain' или' path'. – Lankymart
Хорошая точка. Я только что принял файл cookie на основе сеанса, следовательно, ссылку. (Я знаю - никогда не предполагаю, что он делает задницу у и меня!) – Paul
Спасибо за ответы. нет пути или домена, поэтому я бы догадался (не предположим, предположил.;), что я должен их прочитать). Что касается скрытого поля, у вас есть пример, как это работает? Я тоже должен был упомянуть, что это страница на основе фреймов. Я думаю, я мог бы немного смутить, как я буду читать скрытые значения из верхнего кадра, скажем, – bline22