Я только что установил прокси-страницу для обработки запросов ajax, но я не могу заставить ее работать, поскольку файлы cookie не сохраняются вообще. Мой код выглядит следующим образом:Cookies не сохранены с прокси-сервером aspx
public partial class JsonProxy : System.Web.UI.Page
{
private string username;
private string password;
private int idPlant;
private string mode;
protected void Page_Load(object sender, EventArgs e)
{
try
{
username = !String.IsNullOrEmpty(HttpUtility.UrlDecode(Request.Form["username"])) ? HttpUtility.UrlDecode(Request.Form["username"].ToString()) : string.Empty;
password = !String.IsNullOrEmpty(HttpUtility.UrlDecode(Request.Form["password"])) ? HttpUtility.UrlDecode(Request.Form["password"].ToString()) : string.Empty;
idPlant = !String.IsNullOrEmpty(HttpUtility.UrlDecode(Request.Form["idPlant"])) ? int.Parse(HttpUtility.UrlDecode(Request.Form["idPlant"].ToString())) : 0;
mode = !String.IsNullOrEmpty(HttpUtility.UrlDecode(Request.Form["mode"])) ? HttpUtility.UrlDecode(Request.Form["mode"].ToString()) : string.Empty;
string response = "";
HttpWebRequest wc;
if (!String.IsNullOrEmpty(username) && !String.IsNullOrEmpty(password) && idPlant != 0 && !String.IsNullOrEmpty(mode))
{
//First do authentication
wc= (HttpWebRequest)WebRequest.Create("http://10.255.255.10/Base/Authentication/Login/" + username + "/" + password + ".aspx");
wc.Method = "GET";
StreamReader reader = new StreamReader(((HttpWebResponse)wc.GetResponse()).GetResponseStream());
if (reader.ReadToEnd().Contains("true"))
{
//Then check that authentication succeded
wc = (HttpWebRequest)WebRequest.Create("http://10.255.255.10/Base/Authentication/IsAuthenticated.aspx");
wc.Method = "GET";
reader = new StreamReader(((HttpWebResponse)wc.GetResponse()).GetResponseStream());
string str = reader.ReadToEnd();
if (str.Contains("true"))
{
//Then make BP request
string methodName = "/Base/BusinessPlan/GetBPAlll/" + idPlant + ".aspx";
wc = (HttpWebRequest)WebRequest.Create("http://10.255.255.10" + methodName);
wc.Method = "GET";
reader = new StreamReader(((HttpWebResponse)wc.GetResponse()).GetResponseStream());
response = reader.ReadToEnd();
}
}
}
//Last: write response
Response.ContentType = "application/json";
Response.Write(response);
}
catch (WebException ex)
{
Response.Write("error");
}
}
}
запрос Логин должен создать печенье в клиенте, которые используются в следующем запросе (IsAuthenticated) и в последнем (реальный запрос на самом деле). Однако IsAuthenticated возвращает false сразу после того, как я правильно сделал логин (я вижу, что он возвращает true, как ожидалось). Это похоже на то, что я никогда не вошёл в систему.
Итак, вопрос: как я могу сохранить cookie-файлы в прокси?
Я открыт для ответов, которые учитывают также HttpHandlers
или другие техи, которые делают ajax-проксирование, не обязательно Aspx.
Примечание: если я делаю ту же серию запросов, я могу видеть, как файлы cookie создаются, поэтому это должно быть вопрос о моем прокси-сервере aspx
Да, это то, что я сделал. Я принял ваш ответ, даже если я дам полный текст на всякий случай, если кто-то другой получит ту же проблему. – andreapier