2016-08-12 17 views
8

Web API 2サービス内でWebApiContrib.Formatting.Jsonpを使用しています。また、APIのドキュメントとテストにはSwaggerを使用しています。Web 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要求を正しく送信する方法はありますか? (すべてのJSONPリクエスト用の事前定義のコールバックの名前のような?)
+1

使用シオマネキhttp://www.telerik.com/でソースを読み込むことができますあなたのjsonpリクエストが整形式であることを確認するのに似ています。 CORS以外のJSONPを使用する理由はありますか? – Stack

+0

.NET用のTelerik製品はすべて商用ですが、私はその理由でそれを使用することはできません。また、私は質問しているタイプの過剰なものになると思われます。また、多くのサーバー間でリクエストを処理するにはJSONPが必要です。したがって、CORSだけが私が使用している理由です。 –

+2

ちょうど無料のデバッグプロキシです。これは、.NETとは無関係の無料のスタンドアロンデスクトップアプリケーションです。それが行うのは、デバッグするためのHTTPリクエスト/レスポンスをキャプチャすることだけです。あなたは、Fiddlerほどの柔軟性はありませんが、https://www.getpostman.com/のようなものを試すことができます。 – Stack

答えて

1
PM> Install-Package Newtonsoft.Json.Schema 

それとも、ダウン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 
}; 
関連する問題