0

これは、私が自分自身を認証してアクションを実行するために使用するものです。

var uri = new Uri(@"http://localhost:5898/forums/AddPost/1");
var request = WebRequest.Create(uri);
request.Credentials = new CredentialCache { { new Uri(@"http://localhost:5898/Account/Login"), "Basic", new NetworkCredential("asdf", "ghijkl") } };
request.Method = "POST";

const string strPost = "Content=TestAplikacji&AddedValue=0";
StreamWriter myWriter = null;

request.ContentLength = strPost.Length;
request.ContentType = "application/x-www-form-urlencoded";

string response;
try
{
    myWriter = new StreamWriter(request.GetRequestStream());
    myWriter.Write(strPost);
}
catch
{

}
finally
{
    if (myWriter != null) myWriter.Close();
}

var objResponse = (HttpWebResponse)request.GetResponse();
using (var sr = new StreamReader(objResponse.GetResponseStream()))
{
    response = sr.ReadToEnd();
    sr.Close();
}

コードを実行すると、responseログインとパスワードの検証エラーが発生します。しかし、私が提供したログインとパスワード ( "asdf", "ghijkl") はこれらの要件を満たしています。つまり、http://localhost:5898/Account/Loginは私が提供した資格情報を受け取っていません。私は何を間違っていますか?

4

1 に答える 1

3

ネットワーク資格情報を使用する場合は、Windows 認証/基本認証を使用する必要があると思います。

フォーム認証の場合、ブラウザーが行うことと同じようにページにusernameandを投稿し、応答から認証 Cookie を読み取る必要があります。password認証されたページとさらに通信するために、この Cookie を使用する必要があります。

于 2012-10-09T15:00:57.797 に答える