4

WebApi 2アプリケーションにswaggerを統合しました。アプリケーションが単一のコントローラを持っているときにうまく動作します。 アプリケーションに2番目のコントローラを追加したとき。 。Swagger 2.0ではサポートされていません:複数の操作でパス

エラーが発生しました「」ExceptionMessage:私は、次のエラーを得た「:」SWAGGER 2.0ではサポートされていません:パス「API /資格」と方法「GET」を使用した複数の操作。 "ExceptionType": "System.NotSupportedException"、 "StackTrace": "Swashbuckle.Swagger.SwaggerGeneratorOptions.DefaultConflictingActionsResolver(IEnumerable 1 apiDescriptions)\r\n at Swashbuckle.Swagger.SwaggerGenerator.CreatePathItem(IEnumerable 1 apiDescriptions、SchemaRegistry schemaRegistry)の設定を参照してください - \" ResolveConflictingActions \ "潜在的な回避策については、 \ n Swashbuckle.Swagger.SwaggerGeneratorで\ nです。 <> c__DisplayClass7.b__4(私は2つの方法に従って追加されている第二のコントローラで2 group)\r\n at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable 1ソースのFunc 2 keySelector, Func 2 elementSelector、1 comparer)\r\n at Swashbuckle.Swagger.SwaggerGenerator.GetSwagger(String rootUrl, String apiVersion)\r\n at Swashbuckle.Application.SwaggerDocsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\r\n at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\r\n at System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\r\n at System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\r\n at System.Web.Http.Cors.CorsMessageHandler.<SendAsync>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.HttpServer.たIEqualityComparer d__0.MoveNext() "} http://localhost:50950/swagger/docs/v1

をIGrouping。

string Get(string username, string password); 

string Get(string credential); 

任意のアイデアをどのように修正するのですか?

+0

http://stackoverflow.com/a/42976546/1335146 –

+0

あなたは[カスタマイズSwashbuckle](httpsにしたいことdocs.microsoft.com/en-us/azure/app-service-api/app-service-api-dotnet-swashbuckle-customize)。それで、あなたが必要とするものを達成するためにフィルター方法を適応させるのはあなた次第です。 – Elisa

答えて

-5

どうすればreading the docs? Swashbuckleはこの種のメソッドシグネチャをサポートしていないと言います。ただし、idを設定する操作フィルタを作成したり、Q&Aに指摘されているSwaggerOperationAttributeを使用することができます。

5

あなたは上記の二つの方法には2つのオプション持つことができます。三つのパラメータを持つ単一の一つに二つの方法を組み合わせる

  1. を - それぞれがクエリ文字列になります

  2. のような別々のルートのURLを持っています - api/controller/byusernameapi/controller/bycredentials

-1

方法[Route("ApiAnotherFunction")]とのルート属性を追加します。。

0

この問題は、属性ルーティングを使用する状況でも発生する可能性があります。

属性ルートがルーティング可能なルートと競合する場合は、「複数の操作」エラーが発生します。

例:属性の

[HttpGet] 
[SwaggerOperation("GetByUsername")] 
[Route("[path]/User")] 
public IHttpActionResult GetUser(string username) 
{ 

} 

詳細ルーティング://:https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

関連する問題