jquery ajax调用失败,401未经授权

时间:2013-04-24 14:35:44

标签: jquery ajax post httpwebrequest webmethod

我有一个jquery ajax POST到一个代码隐藏的webmethod。在该web方法中,我对返回json的第三方web api服务执行HttpWebRequest。即使httpwebrequest工作正常,浏览器中也会出现一个弹出窗口,要求我输入凭据(需要进行身份验证)。在我的机器上运行良好,但是在部署时除了httpwebrequest调用没有返回数据外没有。

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(
          CacheDuration = 5,
          EnableSession = true)]
        public static string GetSomething(string user, string item)
{
// In the body i do the HTTPWebRequest that returns JSON
}

1 个答案:

答案 0 :(得分:0)

好的,问题解决了。毕竟这不是一个安全问题,而是序列化问题。在web方法中,我将接收到的对象(通过HttpWebRequest)存储在ASP.NET Session中。部署时,会话存储在db中,因此存在序列化问题。在我的机器上,我使用了inproc会话,这就是它在我的机器上工作的原因。