C#-MVC的Swagger对于同路径同请求类型的重载报错问题

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.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.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.d__0.MoveNext()"}

C#-MVC的Swagger对于同路径同请求类型的重载报错问题_第1张图片

翻译为:

使用路径“api/enterprise/enterprise/sendRegisterVerificationCode”和方法“get”执行多个操作。

原因

检查了下,发现主要原因是我有写重载的接口:
C#-MVC的Swagger对于同路径同请求类型的重载报错问题_第2张图片

可以发现,这两个接口的 ActionName是相同的,也都是Get请求,应该是因此Swagger抛出了异常。尽管出参入参不尽相同。

解决方案:

1.找到SwaggerConfig.cs
会发下下面注释的代码中有c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());这么一行,具体可以看其注释:
C#-MVC的Swagger对于同路径同请求类型的重载报错问题_第3张图片
2.在前面的配置中配置上这行代码:

C#-MVC的Swagger对于同路径同请求类型的重载报错问题_第4张图片
3.根据提示添加:using System.Linq;

然后就ok了。

你可能感兴趣的:(C#)