2013-04-24 51 views
0

我有一個jquery ajax POST代碼隱藏webmethod。在那個webmethod我做了一個HttpWebRequest到第三方web api服務返回json。即使httpwebrequest工作正常,瀏覽器中會出現一個彈出窗口,要求我輸入憑據(需要身份驗證)。在我的機器上,這種方式運行良好,但是,如果沒有從httpwebrequest調用返回的數據,它不會除外。jquery ajax調用失敗,401未經授權

jQuery的電話:

function serverCall(httpMethod, pageName, methodName, inputData, successCallback, errorCallback, disableGlobalAjaxEvents) { 

    // Construct the url 
    var url = pageName + "/" + methodName;  

    var triggerGlobalEvents = true; 
    if (disableGlobalAjaxEvents && disableGlobalAjaxEvents == true) { 
     triggerGlobalEvents = false; 
    } 

    $.ajax({ 
     type: httpMethod, 
     url: url, 
     data: JSON.stringify(inputData), 
     contentType: "application/json; charset=utf-8", 
     global: triggerGlobalEvents, 
     dataType: "json", 
     success: function(msg) { 
      if (successCallback) { 

       var parsedObject = JSON.parse(msg.d); 
       successCallback(parsedObject); 
      } 
     }, 
     error: function(error, status) { 
      if (errorCallback) { 
       errorCallback(error, status); 
      } 
     } 
    }); 

這裏是實際調用:

serverCall("POST", "SomePage.aspx", "GetSomething", inpuData, onSuccess, onError, true); 

將WebMethod:

 [WebMethod(
      CacheDuration = 5, 
      EnableSession = true)] 
     public static string GetSomething(string user, string item) 
{ 
// In the body i do the HTTPWebRequest that returns JSON 
} 
+1

如果你給我們一段代碼,將不勝感激 – Bhuvan 2013-04-24 14:51:14

回答

0

好了,問題就解決了。畢竟,這不是一個安全問題,而是一個序列化問題。在webmethod中,我將收到的對象(通過HttpWebRequest)存儲在ASP.NET Session中。部署時,會話存儲在數據庫中,因此存在序列化問題。在我的機器上,我用inproc會話,這就是爲什麼它在我的機器上工作。

相關問題