2015-10-06 12 views
9

私が闊歩URLにアクセスします。http://localhost:28483/swagger/ui/index、それはこのエラーを生成します。Web APIを - 闊歩ドキュメントエラー500

500 : undefined http://localhost:28483/swagger/docs/v1 

任意のアイデア? UPDATED

: 放火犯で、この詳細なエラーを参照してください:コントローラで

Not supported by Swagger 2.0: Multiple operations 
with path 'api/BimModel' and method 'GET'. See the config setting - \"ResolveConflictingActions\" for 
a potential workaround 
+0

あなたには何がありますか? –

+0

@CuongLe:それは私がブラウザで得たすべてです。 –

答えて

7

SWAGGER(この一般的なシナリオの場合のように)一回の操作などの2つのアクション...

GET api/Products 
GET api/Products/{id} 

を考慮するかもしれないあなたがこの問題を解決するためにattribute routingを使用して、上記のこれらの属性を使用することができそうですあなたの行動はとても魅力的です。

[Route("api/Products")] 

[Route("api/Products/{id:guid}")] 
1

を、それは二つの異なるGET操作を持って、それが闊歩によって許可されていません。 コントローラごとにGET操作を1つだけ行うことをお勧めします。modify the router in WebApiConfig

+1

残念ながら、ApiConfigでのルータの変更は役に立ちません。まだ 'Swagger 2.0:パスを使った複数の操作... 'ではまだサポートされていません。それは、私はそれぞれのgetメソッドのための新しいコントローラを作成する必要があるように見えるか、または他の方法swaggerを協力する(いくつかの属性、...)強制的にですか? – wolen

3

あなたはswagger configでこれを有効にしましたか?

c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First()); 
+1

これはおそらくエラーを解決しますが、他のアクションはスワッガーで表示されません。 – Evan

0

属性ルーティングとデフォルトルートを混在させるときに同じ問題が発生しました。 デフォルトルートを削除したときに問題が解決しました。欠点は、既定のルートが定義されていない場合、すべてのコントローラに属性ルーティングを追加する必要があったことです。私WebApiConfigからそう

私は削除:

config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

そして、私のコントローラへのルーティング属性を追加しました:現実には

[Route("Session")] // Added this attribute 
public async Task<IHttpActionResult> Get() 
...  
[Route("Session/{id}")] // Added this attribute 
public async Task<IHttpActionResult> Get(int id) 

を、私は私のコントローラで[RoutePrefix("Session")]を使用して、私の方法で[Route("")]を使用しますが、結果は同じでなければなりません。

0

属性ルーティングステートメントとメソッドシグネチャが一致しないパラメータ名が原因で、このエラーが発生しました。

[HttpGet("{id}")] 
public IActionResult Get(string deviceNumber){ 
... 

「{id}」を「{deviceNumber}」に変更すると、エラーが修正されました。

関連する問題