当前位置: 首页 > 知识库问答 >
问题:

招摇错误:架构 ID 冲突:检测到类型 A 和 B 的重复架构 ID

井誉
2023-03-14

使用Web API和swashbuckle生成swagger文档,我在两个不同的名称空间中定义了两个同名的不同类。当我在浏览器中打开swagger页面时,它显示

冲突的schemaId:为类型A和B检测到重复的schemaID。请参阅配置设置-“UseFullTypeNameInSchemaIds”以了解潜在的解决方法

完整消息:

500:{“Message”:“发生错误。”,“ExceptionMessage”,“冲突的schemaId:为类型A和B检测到重复的schemaID。”。请参阅配置设置-“UseFullTypeNameInSchemaIds”以了解潜在的解决方法“,”ExceptionType“:”System“。Swashbuckle.Swagger.SchemaRegistry处的InvalidOperationException“,”StackTrace“:”。在Swashbuckle.Swagger.SchemaRegistry处创建RefSchema(类型类型)。在Swashbuckle.Swagger.SchemaRegistry处创建InlineSchema(类型类型)。b_1f(JsonProperty属性)\r\n位于System.Linq.Enumerable。ToDictionary[TSource,TKey,TElement](IEnumerable<code>1个源,Func</code>2个键选择器,Func>code>2个元素选择器,IEqualityComparer</code>1个比较器)\r\n位于Swashbuckle.Swagger.SchemaRegistry。Swashbuckle.Swagger.SchemaRegistry处的CreateObjectSchema(JsonObjectContract-jsonContract)\r\n。在Swashbuckle.Swagger.SchemaRegistry处创建定义架构(类型类型)。Swashbuckle.Swagger.Swagger Generator处的GetOrRegister(类型类型)\r\n。Swashbuckle.Swagger.Swagger Generator处的CreateOperation(ApiDescription apiDesc,SchemaRegistry SchemaRegistry)\r\n。Swashbuckle.Swagger.Swagger Generator处的CreatePathItem(IEnumerable<code>1 apiDescriptions,SchemaRegistry SchemaRegistry)\r\n。

我不想更改我的班级名称。我该如何修复它?

共有3个答案

尹昂雄
2023-03-14

我正在使用Asp.netCore 2.1。当我试图显示Swagger UI时,会出现此错误。

我是这样解决问题的:

Starup.cs中,在配置服务()中添加c.客户模式(i=

参见下面的示例

services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new Info
            {
                Title = "ASP.NET Core 2.1+ ConsumerApp API",
                Version = "v1"
            });
            // Set the comments path for the Swagger JSON and UI.
            var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
            var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
            c.IncludeXmlComments(xmlPath);
            c.CustomSchemaIds(i => i.FullName);
        });

易刚捷
2023-03-14

我终于在swagger配置中找到了一种方法。转到App_Start\SwaggerConfig.cs文件并在EnableSwaggerlambda表达式下添加以下行:

c.SchemaId(x => x.FullName);

完整代码是这样的:

GlobalConfiguration.Configuration 
    .EnableSwagger(c =>
    {
        // your configs...

        c.SchemaId(x => x.FullName);

        // other configs...
    })
    .EnableSwaggerUi(c =>
        // ....
    });
马宜民
2023-03-14

招摇的 JSON 中的每个类都必须具有唯一的 schemaId。

Swashbarkler尝试仅将类名用作简单的模式,但是如果您在不同的名称空间中有两个具有相同名称的类(就像您所做的那样),这将不起作用。

正如错误所暗示的那样,您可以使用配置设置“使用FullTypeNameInSchemaIds*”作为潜在的解决方法(更新:在最新版本中不可用)

在较新的版本中,您可以通过选项实现相同的行为。CustomSchemaIds(x =

这里有一个例子:

   services.ConfigureSwaggerGen(options =>
   {
       //your custom configuration goes here

...

  // UseFullTypeNameInSchemaIds replacement for .NET Core
       options.CustomSchemaIds(x => x.FullName);
   });

欲了解更多信息 http://wegotcode.com/microsoft/swagger-fix-for-dotnetcore/

 类似资料:
  • 我有Kafka的以下配置 我试图通过版本得到主题,我得到如下 我使用插件<;代码>;avro-maven插件>;生成>;CreateBankAccount>;代码< 然后,我用一个字符串键和一个avro序列化的有效负载向主题推送一条消息,但是我有一个错误 轨道: ProducerConfig值: KafkaAvroSerializerConfig值:

  • 我在yaml的open api swagger规范中设置安全模式时遇到了问题。 设置安全架构时出现以下错误: 在路径中,我确实使用了Bearerauth,但仍然存在相同的问题: 路径: 关于如何解决此问题的任何建议,或者实施有任何问题?

  • 问题内容: 我第一次使用最新版本的suds(https://fedorahosted.org/suds/),而我却步入了第一步。 现在,我知道这在suds世界中已广为报道(https://fedorahosted.org/suds/wiki/TipsAndTricks#Schema- TypeNotFound 和Python /Suds:未找到类型:’xs:complexType’],但这似乎略有

  • 问题内容: 我已经来了一段时间,并阅读了许多有关该主题的网站。怀疑我有垃圾造成了这个问题。但是哪里? 当我在python中导入MySQLdb时,这是错误: 我正在尝试64位,所以在这里检查: 已将python的默认版本设置为2.6 尝试删除构建目录和python setup.py clean重命名为Python / 2.5 / site-packages,使其无法尝试提取它。 删除所有内容,并按照

  • 汇合版本4.1.0 我使用KTable从几个主题(topic_1,topic _2)中获取数据,连接数据,然后使用KStream将数据推送到另一个主题(totic_out)。(Ktable.toStream()) 数据采用avro格式 当我使用 我发现 但是没有主题与topic_out键。为什么不创建它? topic_out的输出: 我可以看到密钥正在生成,但没有密钥的主题。 为什么需要带密钥的主