使用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。
我不想更改我的班级名称。我该如何修复它?
我正在使用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);
});
我终于在swagger配置中找到了一种方法。转到App_Start\SwaggerConfig.cs
文件并在EnableSwagger
lambda表达式下添加以下行:
c.SchemaId(x => x.FullName);
完整代码是这样的:
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
// your configs...
c.SchemaId(x => x.FullName);
// other configs...
})
.EnableSwaggerUi(c =>
// ....
});
招摇的 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,但仍然存在相同的问题: 路径: 关于如何解决此问题的任何建议,或者实施有任何问题?
下面是我的xsd模式文件:
问题内容: 我第一次使用最新版本的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的输出: 我可以看到密钥正在生成,但没有密钥的主题。 为什么需要带密钥的主