2012-07-02 89 views
3

我正在構建一個使用Windows身份驗證的MVC應用程序。我想通過使用Jquery post發佈到服務器來處理dropdownlist更改事件。401未經授權的錯誤使用Jquery post和MVC

下面是控制器的方法我想要調用:

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

及以下JavaScript函數來處理下拉的onchange事件:

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

任何人都可以幫助我?謝謝。

回答

4

這正是Windows身份驗證(NTLM)的工作原理。這是一種挑戰/響應身份驗證方案,客戶端發送請求,服務器通過生成一個隨機數來挑戰客戶端證明他擁有正確的憑證,然後客戶端進行身份驗證。您可以在這裏閱讀更多信息:http://www.innovation.ch/personal/ronald/ntlm.html

正常情況下,一旦通過身份驗證,用戶代理就不需要遍歷後續請求的所有階段,並且應該直接能夠發送身份驗證憑證。

+0

啊好的,所以這不是一個錯誤。謝謝您的幫助! –

相關問題