Swagger异常
{"Message":"出现错误。","ExceptionMessage":"Not supported by Swagger 2.0: Multiple operations with path 'api/Enterprise/Enterprise/SendRegisterVerificationCode' and method 'GET'. See the config setting - \"ResolveConflictingActions\" for a potential workaround","ExceptionType":"System.NotSupportedException","StackTrace":" 在 Swashbuckle.Swagger.SwaggerGeneratorOptions.DefaultConflictingActionsResolver(IEnumerable`1 apiDescriptions)\r\n 在 Swashbuckle.Swagger.SwaggerGenerator.CreatePathItem(IEnumerable`1 apiDescriptions, SchemaRegistry schemaRegistry)\r\n 在 Swashbuckle.Swagger.SwaggerGenerator.<>c__DisplayClass7.<GetSwagger>b__4(IGrouping`2 group)\r\n 在 System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)\r\n 在 Swashbuckle.Swagger.SwaggerGenerator.GetSwagger(String rootUrl, String apiVersion)\r\n 在 Swashbuckle.Application.SwaggerDocsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\r\n 在 System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\r\n 在 System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\r\n 在 System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\r\n 在 System.Web.Http.Cors.CorsMessageHandler.<SendAsync>d__0.MoveNext()\r\n--- 引发异常的上一位置中堆栈跟踪的末尾 ---\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n 在 System.Web.Http.HttpServer.<SendAsync>d__0.MoveNext()"}
翻译为:
使用路径“api/enterprise/enterprise/sendRegisterVerificationCode”和方法“get”执行多个操作。
原因
检查了下,发现主要原因是我有写重载的接口:
可以发现,这两个接口的 ActionName是相同的,也都是Get请求,应该是因此Swagger抛出了异常。尽管出参入参不尽相同。
解决方案:
1.找到SwaggerConfig.cs
会发下下面注释的代码中有c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
这么一行,具体可以看其注释:
2.在前面的配置中配置上这行代码:
3.根据提示添加:using System.Linq;
然后就ok了。