InvalidOperationException: Schema-ID kann nicht verwendet werden. Dieselbe Schema-ID wird bereits für den Typ verwendetC#

Ein Treffpunkt für C#-Programmierer
Guest
 InvalidOperationException: Schema-ID kann nicht verwendet werden. Dieselbe Schema-ID wird bereits für den Typ verwendet

Post by Guest »

Ich erhalte die folgende Fehlermeldung.

Code: Select all

InvalidOperationException: Can't use schemaId "$Registration" for type "$PortalService.Models.Registration". The same schemaId is already used for type "$PortalService.Models.Registration"
Ich habe die Vorschläge im folgenden Link ohne Erfolg ausprobiert.
Swagger-Fehler: Widersprüchliche Schema-IDs: Doppelte Schema-IDs für Typ A und B erkannt< /p>
Ich habe nur eine Registrierungsklasse in Modellen. Ich habe erfolglos versucht, die Klasse umzubenennen.
Ich verwende ein OData .Net Core 3.1-Projekt.
Konfigurieren Sie Swagger unten

Code: Select all

 services.AddTransient();
services.AddSwaggerGen(c =>
{
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = @"JWT Authorization header using the Bearer scheme. \r\n\r\n
Enter 'Bearer' [space] and then your token in the text input below.
\r\n\r\nExample: 'Bearer 12345abcdef'",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey,
Scheme = "Bearer"
});

c.AddSecurityRequirement(new OpenApiSecurityRequirement()
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
},
Scheme = "oauth2",
Name = "Bearer",
In = ParameterLocation.Header,

},
new List()
}
});
});
Verwenden Sie Swagger unten

Code: Select all

  app.UseSwagger(c =>
{
//c.PreSerializeFilters.Add((swaggerDoc, httpReq) => swaggerDoc.BasePath = basepath);

c.PreSerializeFilters.Add((swaggerDoc, httpReq) => {
Microsoft.OpenApi.Models.OpenApiPaths paths = new Microsoft.OpenApi.Models.OpenApiPaths();
foreach (var path in swaggerDoc.Paths)
{
paths.Add(path.Key.Replace(path.Key, basepath + path.Key), path.Value);
}
swaggerDoc.Paths = paths;
});
});
app.UseSwaggerUI(
options =>
{
options.RoutePrefix = string.Empty;

// build a swagger endpoint for each discovered API version

foreach (var description in provider.ApiVersionDescriptions)
{
options.SwaggerEndpoint($"{basepath}/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
}

});
Dies scheint mit
Swagger-Abstürzen bei zirkulären Modellreferenzen zusammenzuhängen
Ich habe festgestellt, dass if Ich kommentiere die Partner-Rückreferenz aus der Registrierung aus, der Fehler verschwindet, aber ich benötige diese Referenz. Mir ist nicht klar, wie ich die Situation beheben kann.

Code: Select all

[ForeignKey("Partner")]
[DataMember(Name = "PartnerOID")]
[Column(TypeName = "VARCHAR(100)")]
public string PartnerOID { get; set; }
//public virtual Partner Partner { get; set; }

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post