2017-09-13 1 views
1

내가, 내가 dataASP.NET ActionResult는

public ActionResult PerformMagic(string a, string b, int c) 
{ 
    try 
    { 
     // Some code which always gives an error and go to catch block 
    } 
    catch (Exception ex) 
    { 
     // ex.Message = "An error occured" 

     Response.StatusCode = (int)HttpStatusCode.BadRequest; 
     return this.Content(System.Web.Helpers.Json.Encode(new { error = ex.Message }), "application/json"); 
    } 
} 

그래서 전화가 아래의 결과를 반환하는 다음 코드 그래서

{ 
    config : {method: "GET", transformRequest: Array(1), transformResponse: Array(1), jsonpCallbackParam: "callback", paramSerializer: ƒ, …} 
    data : 
     error : "An error occured" 
    __proto__ : Object 
    headers : ƒ (name) 
    status : 400 
    statusText : "" 
    __proto__ : Object 
} 

를 얻을 수있다 호스팅 로컬 호스트와 푸른 웹 서비스에 대해 서로 다른 응답을 제공합니다 JSON 내부에서 error을 찾아 값 (An error occured)을 경고로 표시하십시오.

로컬 호스트에서 실행되는 경우가 완벽하게 작동

하지만 푸른 응용 프로그램 서비스에이를 배포하고 실행할 때, 응답이 의미

{ 
    config : {method: "GET", transformRequest: Array(1), transformResponse: Array(1), jsonpCallbackParam: "callback", paramSerializer: ƒ, …} 
    data : "Bad Request" 
    headers : ƒ (name) 
    status : 400 
    statusText : "Bad Request" 
    __proto__ : Object 
} 

아래로 온다, 나는 data 내부 error를 찾을 수 없습니다. 아무도 왜 이런 행동을하는지 설명 할 수 있습니까?

+1

내 첫번째 추측은 디버깅 로컬 활성화 및 예외 정보를 반환하지 않습니다 하늘빛의 릴리스 버전을 배포하는 것입니까? 예외가 정보 유출이 될 수 있기 때문에 이것은 좋은 일입니다. –

+0

@RickvandenBosch 디버그 설정에서 앱을 배포 할 때도 동일한 동작이 발생합니다. –

답변

2

이 문제의 원인은 httpErrors element에 있습니다. 로컬 컴퓨터의 동작과 비교하여 Azure에서 다른 기본 동작을 갖는이 요소를 이미징 할 수 있습니다.

길고도 짧은 이야기 : 당신의 Web.config에 system.WebServer 요소 아래에이를 추가하여 해결할 수 있습니다 :

<httpErrors existingResponse="PassThrough" /> 

가능한 값은 자동 (0), 교체 (1)과 패스 스루 (2) :

existingResponse values

이 변경 사항에 따른 보안상의 영향에 대해 확실하지 않습니다. 그러나 거기에 속하지 않은 사용자에게 (예외) 세부 정보를 반환 할 수 있습니다.

대답은이 게시물을 기반으로합니다 ASP.NET+Azure 400 Bad Request doesn't return JSON data

+0

Worked - Didnt는이 사실을 정말로 알고 있습니다. 정보 주셔서 감사합니다. –

1

두 시스템 (localhost 및 azure)이 동일한 .NET Framework를 실행하는지 확인하십시오. 그렇지 않으면 직렬화를 처리하는 NuGet 패키지 내의 이상한 캐싱을 확인하십시오.