3

我正在构建一个使用 Windows 身份验证的 MVC 应用程序。我想通过使用 Jquery 发布到服务器来处理下拉列表更改事件。

下面是我要调用的 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 调用会工作多次。但过了一段时间,它在一个事件中调用了 3 次帖子,并在所有事件上返回 401 未经授权的错误。尽管第三次调用似乎成功了。

通话后错误

任何人都可以帮助我吗?谢谢。

4

1 回答 1

4

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

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

于 2012-07-02T16:31:03.213 回答