401使用Jquery post和MVC的未经授权的错误

时间:2012-07-02 15:17:37

标签: asp.net-mvc asp.net-mvc-3 jquery

我正在构建一个使用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);
    }
}

我认为这些方法没有问题,因为当我最初加载页面并进行更改时,后调用会多次运行。但过了一段时间,它在一个事件中调用了3次,并在所有这些事件上返回401未经授权的错误。虽然第三次电话会议似乎是成功的。

Post call error

任何人都可以帮我这个吗?感谢。

1 个答案:

答案 0 :(得分:4)

这正是Windows身份验证(NTLM)的工作原理。这是一种质询/响应身份验证方案,客户端发送请求,服务器通过生成现时证明客户端证明他拥有正确的凭据,然后客户端进行身份验证。您可以在此处阅读更多内容:http://www.innovation.ch/personal/ronald/ntlm.html

通常,一旦经过身份验证,用户代理就不需要在后续请求中完成所有阶段,并且应该能够直接发送身份验证凭据。