0

Swashbuckle で構成された ASP.NET WebApi を使用して、swagger ui を表示しています。IIS Express の VS 内から実行します。解決策はVS 2013にあり、うまくいきました。VS 2015 への移行後、swagger にはメソッドが表示されません。エラーはありません。空のリストです。返される応答は次のとおりです。

{"swagger":"2.0","info":{"version":"v4","title":"Swashbuckle Dummy API V4"},"host":"localhost:35622","schemes":["http"],"paths":{},"definitions":{}}

ドキュメントのトラブルシューティングの章を確認しましたが、それに基づいて構成は問題ありません。次に何を試すことができますか?

4

1 に答える 1

1

問題が見つかりました。状況を簡単に説明します。API をバージョン管理し、カスタム ControllerSelector (から派生DefaultHttpControllerSelector) を使用して、適切なバージョンのコントローラーを選択します。(API バージョンは Http ヘッダーから取得されます。) Controllersフォルダーにはサブフォルダー ( V1V2など) があり、コントローラー クラスはそれらのサブフォルダーに配置されます。

通常、ドキュメンテーションの生成には、コントローラー名 ('Controller' 接尾辞のない短い名前)でキー付けされたリストを内部で管理する、ApiExplorerによって供給されるクラスが使用されます。このリストを作成するとき、コントローラー名が既にリストに追加されているかどうかを確認し、追加されている場合は、他のコントローラーを追加しないだけでなく、既に追加されているコントローラーを削除します。この場合、複数のバージョンを持つコントローラーの記述子がないことを意味します。DefaultHttpControllerSelectorHttpControllerDescriptors

IHttpControllerSelector.GetControllerMapping()カスタム コントローラー セレクターをオーバーライドし、バージョンのプレフィックスが付いたコントローラー名を渡すことで修正できました。これも有効なルートです。カスタム ControllerSelector は、URL で渡されたバージョンも受け入れます。

于 2015-09-17T08:47:56.163 に答える