C#-MVC的Swagger对重复的架构ID(类型名重复)报错问题

Swagger异常

{"Message":"出现错误。","ExceptionMessage":"Conflicting schemaIds: Duplicate schemaIds detected for types Lunz.Services.CarHr.Model.City and Lunz.Services.CarHr.Model.Enterprise.City. See the config setting - \"UseFullTypeNameInSchemaIds\" for a potential workaround","ExceptionType":"System.InvalidOperationException","StackTrace":"   在 Swashbuckle.Swagger.SchemaRegistry.CreateRefSchema(Type type)\r\n   在 Swashbuckle.Swagger.SchemaRegistry.CreateInlineSchema(Type type)\r\n   在 Swashbuckle.Swagger.SchemaRegistry.CreateArraySchema(JsonArrayContract arrayContract)\r\n   在 Swashbuckle.Swagger.SchemaRegistry.CreateInlineSchema(Type type)\r\n   在 Swashbuckle.Swagger.SchemaRegistry.b__1f(JsonProperty prop)\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.SchemaRegistry.CreateObjectSchema(JsonObjectContract jsonContract)\r\n   在 Swashbuckle.Swagger.SchemaRegistry.CreateDefinitionSchema(Type type)\r\n   在 Swashbuckle.Swagger.SchemaRegistry.GetOrRegister(Type type)\r\n   在 Swashbuckle.Swagger.SwaggerGenerator.CreateOperation(ApiDescription apiDesc, SchemaRegistry schemaRegistry)\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对重复的架构ID(类型名重复)报错问题_第1张图片

冲突的架构ID:为lunz.services.carhr.model.city和lunz.services.carhr.model.enterprise.city类型检测到重复的架构ID

根据错误提示,说明是有重复名的类型引用,尽管是不同命名空间下的。

解决

方案1:
类型重命名,不要有同名的类型,不管是不是同一命名空间下。
方案2:
1.SwaagerConfig.cs
寻找该行注释:c.UseFullTypeNameInSchemaIds();
可以看到其注释信息:
C#-MVC的Swagger对重复的架构ID(类型名重复)报错问题_第2张图片
2.在其初始化中添加该行代码:
C#-MVC的Swagger对重复的架构ID(类型名重复)报错问题_第3张图片

启动就好了。

对于Swagger来说,这种异常明显是能够支持的只不过默认没开启,大都都在下面注释里面,可以根据错误提示,去添加相应代码,以支持各种情况。

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