2016-08-12 1 views
8

웹 API 2 서비스에서 WebApiContrib.Formatting.Jsonp을 사용하고 있으며 API 설명서 및 테스트에는 Swagger을 사용하고 있습니다.웹 API에서 유효하지 않은 JSONP 요청 처리

내가 Swagger을 통해 어떤 JSONP 방법을 트리거하면, 다음 줄에 파일 JsonpMediaTypeFormatter.cs 내 서비스 충돌

: Swagger 콜백 이름을 지정 허용하지 않는 이유

한 가지를 들어
throw new InvalidOperationException(Properties.Resources.NoCallback); 
// NoCallback = The name 'NoCallback' does not exist in the current context 

, 이해가 안 돼요 JSONP 요청의 경우 그러나 더 중요한 것은, 나는 그것 때문에 서비스가 추락하는 것을 원하지 않는다.

질문 :

  • 우리가 어떻게 서비스 측면에서 이러한 오류를 처리 할 수 ​​있습니까?
  • Swagger이 JSONP 요청을 제대로 보내도록하는 방법이 있습니까?
+1

사용 피들러 http://www.telerik.com/에서 소스를로드 할 수 있습니다 피들러 또는 jsonp 요청이 올바른지 확인하기 위해 이와 비슷한 것을 사용하십시오. CORS 이외의 일반 JSON이 아닌 JSONP를 사용해야하는 이유가 있습니까? – Stack

+0

. NET에 대한 Telerik 제품은 모두 상업용입니다. 그 이유 때문에 사용할 수 없으며, 내가 묻는 질문 유형에 과도 함이 될 수도 있습니다. 그리고 많은 서버에서 요청을 처리하기 위해 JSONP가 필요합니다. CORS가 제가 사용하는 유일한 이유입니다. –

+2

무료 디버깅 프록시입니다. .NET과 아무 관련이없는 무료 독립형 데스크톱 응용 프로그램입니다. 디버깅을 위해 HTTP 요청/응답을 캡처하는 것뿐입니다. Fiddler만큼 유연하지는 않지만 https://www.getpostman.com/과 같은 것을 시도 할 수 있습니다. – Stack

답변

1
PM> Install-Package Newtonsoft.Json.Schema 

(같은? 모든 JSONP 요청에 대한 콜백 이름을 미리 정의) 또는 아래 https://github.com/JamesNK/Newtonsoft.Json.Schema/releases

JSchema schema = JSchema.Parse(request.Schema); 
JToken json = JToken.Parse(request.Json); 

// validate json 
IList<ValidationError> errors; 
bool valid = json.IsValid(schema, out errors); 

// return error messages and line info to the browser 
return new ValidateResponse 
{ 
    Valid = valid, 
    Errors = errors 
};