2013-08-01 6 views
1

단일 방법으로 하나의 원격 REST service을 차례로 두 번 호출합니다. 첫 번째 호출에서는 accessToken의 값을 설정하고 두 번째 요청에서는이 값을 사용합니다. .ashx - 원격 서버에서 오류를 반환했습니다 : (500) 내부 서버 오류

내가 그것을 실행하고

, 그것은 다음

The remote server returned an error: (500) Internal Server Error.

로 나에게 오류를주고있다 코드입니다.

<add key="GrantCodeRequest" value="https://<location>/AuthorizationServices/provider/authorize?response_type=code&state=mystateid&client_id=mVisum&redirect_uri=http://localhost:1316/RetrieveContext.aspx&scope=read"/> 
<add key="AccessTokenRequest" value="https://<location>/AuthorizationServices/oauth/token?client_id=mVisum&state=mystateid&scope=read&client_secret=TESTMVISUM&response_type=token&grant_type=authorization_code&redirect_uri=http://localhost:1316/RetrieveContext.aspx"/> 
<add key="RetrieveContextRequest" value="http://<location>/UserContext/rest/context/user/system/"/> 

내가 유효한 값이 두 번째 호출에 초기화 accessToken 값 만 두 번째 요청을하고있는 중이 야도 예외없이 노력하고 있습니다 :

HttpWebRequest webRequest = null; 
    HttpWebResponse webResponse = null; 
    Encoding encodingObj = null; 
    StreamReader streamReaderObj = null; 

    string grantCode = string.Empty; 
    string resultString = string.Empty; 
    string accessToken = string.Empty; 

    private void Instantiate() 
    {    
     grantCode = HttpContext.Current.Request.QueryString["code"].ToString(); 
     webRequest = (HttpWebRequest)WebRequest.Create(Constants.ACCESS_TOKEN_REQUEST + "&code=" + grantCode); 
     webRequest.Method = "GET"; 
     webRequest.ContentType = "application/json"; 
     webResponse = (HttpWebResponse)webRequest.GetResponse(); 
     encodingObj = System.Text.Encoding.GetEncoding("utf-8"); 
     streamReaderObj = new StreamReader(webResponse.GetResponseStream(), encodingObj); 
     resultString = streamReaderObj.ReadToEnd(); 
     JObject parameterCollection = JObject.Parse(resultString); 
     accessToken = parameterCollection["access_token"].ToString(); 
     //HttpContext.Current.Response.Write("<br/><br/>Code: <br/>" + grantCode); 
     //HttpContext.Current.Response.Write("<br/><br/>Access Token: <br/>" + accessToken); 

     webRequest = (HttpWebRequest)WebRequest.Create(Constants.RETRIEVE_CONTEXT_REQUEST + "vista-688/id/Staff01"); 
     webRequest.Method = "GET"; 
     webRequest.Accept = "application/json"; 
     webRequest.ContentType = "application/json"; 
     webRequest.Headers.Add("Authorization", "Bearer " + accessToken); 
     webResponse = (HttpWebResponse)webRequest.GetResponse(); 
     encodingObj = System.Text.Encoding.GetEncoding("utf-8"); 
     streamReaderObj = new StreamReader(webResponse.GetResponseStream(), encodingObj); 
     resultString = streamReaderObj.ReadToEnd(); 
     //HttpContext.Current.Response.Write("<br/><br/>Retrieve Context: <br/>" + resultString); 
    } 

다음은 설정 파일에서 전체 나머지 API를 URL이 있습니다. 이 메소드는 하나의 핸들러에 작성됩니다.

왜 이런 일이 일어 났는지 말해 줄 수 있습니까? REST 웹 서비스에는 아무런 문제가 없다. 또한 두 개의 별도의 웹 요청과 웹 응답 객체를 사용하지만 아무것도

 WebClient client = new WebClient(); 
     client.Headers["Content-type"] = @"application/json"; 
     Stream data = client.OpenRead(yoururl); ; 
     StreamReader reader = new StreamReader(data); 
     string responseFromServer = reader.ReadToEnd(); 

위의 나를 위해 잘 작동을 사용하는

+0

* 브라우저 *에서 500 오류가 표시되지만 예외는 무엇입니까? 'try/catch' 블록으로 예외를 잡으려고 했습니까? –

+0

디버깅 할 때 rservice의 전체 URL은 무엇입니까? –

+0

@ 코리 예. 단순히 같은 오류를 보여줍니다. 내부 예외가 없습니다. – Ajinkya

답변

0

시도 밖으로 작동하지 않습니다으로 노력했다.