2016-12-12 3 views
0

WebAPI2サービス機能のパラメータを設定しようとしています。ここ は、ルートと定義です:WebAPI2オプションのパラメータが正しく動作しない

[HttpGet, Route("mp/CEG/{ST?}/{PR?}/{DES?}"), ResponseType(typeof(CEG))] 
public object CEG(string ST = null, string PR = null, string DES = null) 

しかし、私はすべてのパラメータは、それらが必要とされている状態とI以下のようにそれを文書化して闊歩UI(Swashbuckleを使用して構築された)でテストを実行しようと、 ときパラメタなしでテストを提出することはできません。

XMLDOC:

/// <summary> 
///  Gets list of Apps for passed ST, PR and/or DES 
/// </summary> 
/// <param name="ST">ST</param> 
/// <param name="PR">PR</param> 
/// <param name="DES">DES</param> 
/// <returns>List of CE Approvals</returns> 

任意のアイデア?

この機能は、Visual Studio内で機能テストを実行するときにパラメータなしで機能します。
問題を引き起こしているのはSwaggerUI/Swashbuckleだけです。私は消費者にテストをする機会を与えるためにそれを使用しています。ルートへ

更新

[HttpGet, Route("mp/CEG/{ST}"), 
      Route("mp/CEG/{PR}"), 
      Route("mp/CEG/{DES}"), 
      Route("mp/CEG/{ST}/{PR}"), 
      Route("mp/CEG/{ST}/{DES}"), 
      Route("mp/CEG/{PR}/{DES}"), 
      ResponseType(typeof(CEG))] 

答えて

0

あなたのルートを闊歩2.0に準拠していません。 specificationはパラメータについて言います(私の言葉では):

パラメータが "path"にある場合は、常にパラメータが必要です。あなたはそのようなパラメータクエリを実行するためのパラメータを変更しないのはなぜ

[HttpGet, Route("mp/CEG"), ResponseType(typeof(CEG))] 
public object CEG(string ST = null, string PR = null, string DES = null) 
+0

WebAPI2は、あなたが何を言ってるのか「パス」routes.Notでのオプションのパラメータが確認できます。 – MB34

+1

はい、Web APIは許可しますが、Swaggerは許可しません。したがって、Swagger仕様への私の言及。 – venerik

+0

さて、それは駄目です。 Swaggerが本質的に使用されているのではありませんか?それがUIのドキュメントと「テスト」オプションにどのように影響しますか? – MB34

関連する問題