2013-04-24 2 views
0

코드 숨김 웹 메소드에 대한 jquery ajax POST가 있습니다. 해당 webmethod에서 json을 반환하는 제 3 자 웹 API 서비스에 HttpWebRequest를 수행합니다. 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

답변

0

좋아, 문제가 해결된다. 결국 직렬화 문제가 아닌 보안 문제는 아니 었습니다. webmethod에서 나는 ASP.NET 세션에서 (HttpWebRequest를 통해)받은 객체를 저장했다. 배포 할 때 세션은 db에 저장되므로 직렬화 문제가 발생합니다. 내 컴퓨터에서 inproc 세션을 사용했기 때문에 내 컴퓨터에서 작동했습니다.

관련 문제