Спасибо за все ответы. Вот мое странное решение. :) Я пишу это, потому что кому-то это может понадобиться в будущем.
Файл cookie, который я получаю, не содержит определенной пары [имя, значение], например [logged, true]. Единственное, что я получаю, это что-то вроде:
Set-Cookie: ASP.NET_SessionId=ah0b2kj40oi0vuufv0mmot35; path=/; HttpOnly\r\n
Итак, я подумал, что нахожусь не в том направлении, и попытался найти другой способ анализа, если вход успешен или нет. Мое решение состоит в том, чтобы использовать StatusCode ответа. Я понял, что (спасибо комментарию Джейсона о коде ошибки 401) сервер отвечает HTTP 302 Найденный код состояния, если вход выполнен успешно. Но если вход в систему неудачен, он отвечает с той же самой страницей входа (то есть HTTP 200 OK). Поэтому в зависимости от полученного HTTP-кода ответа я решаю, успешен он или нет. Вот пример кода:
//In LoginForm.cs
if (((HttpWebResponse)request.GetResponse()).StatusCode.ToString().Equals("Found"))
{
nextUrl = ((HttpWebResponse)request.GetResponse()).Headers.Get(4);
StringBuilder FullUrl = new StringBuilder(this.server_address);
FullUrl.Append(nextUrl);
this.setSecretURL(FullUrl.ToString());
setLoginSuccess(true);
// now we can send out cookie along with a request for the protected page
request = WebRequest.Create(SECRET_PAGE_URL) as HttpWebRequest;
request.CookieContainer = cookies;
StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream());
// and read the response
result = responseReader.ReadToEnd();
responseReader.Close();
} else
{
setLoginSuccess(false);
}