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.<CreateObjectSchema>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.<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()"}
冲突的架构ID:为lunz.services.carhr.model.city和lunz.services.carhr.model.enterprise.city类型检测到重复的架构ID
根据错误提示,说明是有重复名的类型引用,尽管是不同命名空间下的。
解决
方案1:
类型重命名,不要有同名的类型,不管是不是同一命名空间下。
方案2:
1.SwaagerConfig.cs
寻找该行注释:c.UseFullTypeNameInSchemaIds();
可以看到其注释信息:
2.在其初始化中添加该行代码:
启动就好了。
对于Swagger来说,这种异常明显是能够支持的只不过默认没开启,大都都在下面注释里面,可以根据错误提示,去添加相应代码,以支持各种情况。