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