swagger erreur: les conflits d'schemaIds: Double schemaIds détecté pour les types A et B
À l'aide de l'API Web et à l'aide de swashbuckle pour générer swagger documentation,
J'ai défini deux classes différentes avec le même nom dans les deux autres espaces de noms. quand j'ai ouvert swagger page dans mon navigateur, il dit
Contradictoires schemaIds: Double schemaIds détecté pour les types A et B. Voir le paramétrage de la configuration - "UseFullTypeNameInSchemaIds" pour un éventuel contournement
complet du message:
500 : {"Message":"Une erreur s'est produite.","ExceptionMessage":"Conflit schemaIds: Double schemaIds détecté pour les types A et B. Voir le paramétrage de la configuration - \"UseFullTypeNameInSchemaIds\" pour un éventuel contournement","ExceptionType":"le Système de.InvalidOperationException","StackTrace":" au Swashbuckle.Swagger.SchemaRegistry.CreateRefSchema(Type)\r\n à Swashbuckle.Swagger.SchemaRegistry.CreateInlineSchema(Type)\r\n à Swashbuckle.Swagger.SchemaRegistry.b__1f(JsonProperty prop)\r\n au Système.Linq.Énumérable.ToDictionary[TSource,TKey,TElement](IEnumerable
1 source, Func
2 keySelector, Func2 elementSelector, IEqualityComparer
1 comparer)\r\n à Swashbuckle.Swagger.SchemaRegistry.CreateObjectSchema(JsonObjectContract jsonContract)\r\n à Swashbuckle.Swagger.SchemaRegistry.CreateDefinitionSchema(Type)\r\n à Swashbuckle.Swagger.SchemaRegistry.GetOrRegister(Type)\r\n à Swashbuckle.Swagger.SwaggerGenerator.CreateOperation(ApiDescription apiDesc, SchemaRegistry schemaRegistry)\r\n à Swashbuckle.Swagger.SwaggerGenerator.CreatePathItem(IEnumerable1 apiDescriptions, SchemaRegistry schemaRegistry)\r\n at Swashbuckle.Swagger.SwaggerGenerator.<>c__DisplayClass7.<GetSwagger>b__4(IGrouping
2 groupe)\r\n au Système.Linq.Énumérable.ToDictionary[TSource,TKey,TElement](IEnumerable1 source, Func
2 keySelector, Func2 elementSelector, IEqualityComparer
1 comparer)\r\n à Swashbuckle.Swagger.SwaggerGenerator.GetSwagger(String rootUrl, Chaîne apiVersion)\r\n à Swashbuckle.Application.SwaggerDocsHandler.SendAsync(HttpRequestMessage demande, CancellationToken cancellationToken)\r\n au Système.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage demande, CancellationToken cancellationToken)\r\n au Système.Web.Http.Répartiteur.HttpRoutingDispatcher.SendAsync(HttpRequestMessage demande, CancellationToken cancellationToken)\r\n au Système.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage demande, CancellationToken cancellationToken)\r\n au Système.Web.Http.HttpServer.d__0.MoveNext()"} http://localhost:24215/swagger/docs/v1
Je ne veux pas changer mes classes de noms. Comment puis-je résoudre ce problème?
OriginalL'auteur Mahdi Ataollahi | 2017-09-06
Vous devez vous connecter pour publier un commentaire.
Chaque classe dans le swagger JSON doit être unique schemaId.
Bretteur essaie de n'utiliser que le nom de la classe comme un simple schemaId, toutefois, si vous avez deux classes dans des espaces de noms différents avec le même nom (comme vous le faites) cela ne fonctionnera pas.
Que l'erreur l'indique, vous pouvez utiliser le paramètre de configuration "UseFullTypeNameInSchemaIds" pour une éventuelle solution de contournement.
si votre préoccupation est de savoir Comment utiliser "UseFullTypeNameInSchemaIds".NetCore middleware? vous pouvez obtenir le même comportement via les options.CustomSchemaIds(x => x.FullName).
Voici un exemple:
pour plus d'informations http://wegotcode.com/microsoft/swagger-fix-for-dotnetcore/
OriginalL'auteur
J'ai enfin trouvé un moyen de swagger configs. Aller à
App_Start\SwaggerConfig.cs
fichier et sousEnableSwagger
expression lambda ajouter cette ligne:Code complet est comme ceci:
OriginalL'auteur Mahdi Ataollahi
Je suis en utilisant Asp.net de Base 2.1. Cette erreur a entraîné quand j'ai essayé de montrer la Supériorité de l'INTERFACE utilisateur.
J'ai résolu le problème de cette façon:
Dans
Starup.cs
, dansConfigureServices()
ajouterc.CustomSchemaIds(i => i.FullName);
voir l'exemple ci-dessous:
OriginalL'auteur Hidan
Si vous avez des commentaires ou ajouter:
Dans cette section, il semble faire la même chose.
OriginalL'auteur Karl Merecido