3

Windows認証を使用するMVCアプリケーションを構築しています。Jquery postを使用してサーバーに投稿することにより、ドロップダウンリストの変更イベントを処理したいと思います。

以下は、呼び出したいControllerメソッドです。

[HttpPost]
public JsonResult UpdateConversion(int conversionId, int? conversionStandardId)
{
    // Some statements here
}

以下は、ドロップダウンのonchangeイベントを処理するjavascript関数です。

function onConversionValueChange() {
    var input = $(this);
    var conversionId = input.attr('id').replace('ConversionFor', '');
    var selectedValue = input.val();

    if (selectedValue == '') {
        $.post(Conversions._UpdateConversionURL, { conversionId: conversionId }, onConversionValueChanged);
    }
    else {
        $.post(Conversions._UpdateConversionURL, { conversionId: conversionId, conversionStandardId: selectedValue }, onConversionValueChanged);
    }
}

最初にページを読み込んで変更を行うと、post呼び出しが数回機能するため、これらのメソッドに問題はないと思います。しかし、しばらくすると、1つのイベントで投稿を3回呼び出し、すべてのイベントで401の不正なエラーを返します。3回目の呼び出しは成功したようですが。

ポストコールエラー

誰でもこれを手伝ってくれますか?ありがとう。

4

1 に答える 1

4

これがまさにWindows認証(NTLM)の仕組みです。これは、クライアントが要求を送信し、サーバーがクライアントにナンスを生成して正しい資格情報を持っていることを証明するように要求し、クライアントが認証するチャレンジ/レスポンス認証スキームです。詳細については、http ://www.innovation.ch/personal/ronald/ntlm.htmlをご覧ください。

通常、一度認証されると、ユーザーエージェントは後続のリクエストのすべてのフェーズを通過する必要はなく、認証資格情報を直接送信できる必要があります。

于 2012-07-02T16:31:03.213 に答える