すべての返信に感謝します。これが私の奇妙な解決策です。:) 誰かが将来それを必要とするかもしれないので、私はこれを書いています.
受け取った Cookie には、[logged,true] のような特定の [name,value] ペアが含まれていません。私が受け取る唯一のものは次のようなものです:
Set-Cookie: ASP.NET_SessionId=ah0b2kj40oi0vuufv0mmot35; path=/; HttpOnly\r\n
そのため、間違った方向に進んでいると思い、ログインが成功したかどうかを分析する別の方法を見つけようとしました。私の解決策は、応答の StatusCode を使用することです。(エラー コード 401 に関する Jason のコメントに感謝します) ログインが成功すると、サーバーは HTTP 302 Found ステータス コードで応答することに気付きました。しかし、ログインに失敗した場合は、同じログイン ページ (つまり、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);
}