2017-11-15 1 views
0

나는 웹 API에 JSON을 통해 개체를 보내려고하지만JSON : (500) 내부 서버 오류

내 클라이언트 측 행동으로 예외 실행 계속입니다

public string SubmitNewIncident(Incident input) 
    { 
     string response = String.Empty; 
     string serialisedJSON = String.Empty; 

     input.Type = 0; 

     serialisedJSON = JsonConvert.SerializeObject(input); 
     string fpath = String.Format(@"C:\dev\serialisedJSONLog_{0}.txt", DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss")); 
     System.IO.File.WriteAllText(fpath, serialisedJSON); 

     using (WebClient wc = new WebClient()) 
     { 
      wc.Headers[HttpRequestHeader.ContentType] = "application/json"; 
      try 
      { 
       response = wc.UploadString(new Uri("http://localhost:25657/api/RaiseNew"), serialisedJSON); 
      } 
      catch(Exception ex) 
      { 
       string path = String.Format(@"C:\dev\ErrorLog_{0}.txt", DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss")); 
       System.IO.File.WriteAllText(path, ex.ToString()); 
       throw ex; 
      } 
     } 

     return (response); 
    } 

JSON 문자열은 정상적으로 보이지만 매우 길다. 내 서버 측 코드는 다음과 같습니다

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

public class RaiseNewController : ApiController 
{ 
    // GET api/raisenew 
    [HttpGet] 
    public HttpStatusCode Get() 
    { 
     return HttpStatusCode.OK; 
    } 


    //POST api/raisenew 
    [HttpPost] 
    public int Post([FromBody] Incident input) 
    { 
     input.AssignedTo = AssignNewTicket(input.AppID ?? 0); 

     return 0; 
    } 

문자열 serialisedJSON의 값은 내가 작업을 호출 할 때 여기

를 게시하고 나는 다음과 같은 예외를 얻을 JSON 문자열을 업로드하는 데 시간이 너무 오래입니다

+0

역 직렬화를하기 전에 얻은 텍스트와 응답해야 할 내용을 알려주십시오. 당신이 그것을 공유 할 수 있다면 나는 당신을 올바르게 도울 것입니다. –

+0

"http : // localhost : 25657/api/RaiseNew" 여기에 확장자 .php가 누락되어 있지 않습니까? – MwBakker

+1

ASP.NET 웹 API는 Json.NET을 사용합니다. 왜 비추천 JavascriptSerializer를 사용하고 있습니까? 실제로 웹 API는 내용이 유효하고 입력 매개 변수 유형을 'Incident'으로 변경하면 객체를 자동으로 deserialize합니다. –

답변

3

게시 된 데이터에서 value이라는 속성을 찾으려면 ASP.Net에 알려야한다고 생각합니다.

저는 개인적으로 ASP.Net이 자동으로 deserialization을 처리하도록했습니다.

[HttpPost] 
public int Post(Incident incident) 
{ 
    Process(incident); 

    return 0; 
} 
+0

대신 시도해 보았습니다. System.Net.WebException : 원격 서버에서 오류를 반환했습니다 : (500) Internal Server Error – Lefti

+0

@ 왼쪽 서버 측 코드 디버깅을 시도하십시오. '프로세스 (사건)'에 대한 호출에서 중단 점을 추가하면 예상대로 사건이 채워지습니까? – phuzi

+0

나는 이것을 시도했다, 결코 중단 점에 도달한다 – Lefti