Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#.NET CORE在NSwag文档中添加自定义标题?_C#_Asp.net Core_Nswag - Fatal编程技术网

如何使用C#.NET CORE在NSwag文档中添加自定义标题?

如何使用C#.NET CORE在NSwag文档中添加自定义标题?,c#,asp.net-core,nswag,C#,Asp.net Core,Nswag,我需要添加自定义标题,但无法解决它。我正在尝试使用新的services.AddOpenApiDocument()而不是services.AddSwaggerDocument()。我想在我的整个API上添加这些自定义头,而不仅仅是一个方法或控制器。我试图添加一个操作处理器,但当我加载Swigger UI时,我收到以下错误“这是我在项目中实现的一个示例。对我来说,它工作正常: 接口“IOperationProcessor”的实现: 这终于对我起作用了Rico Suter直接提供的解决方案 试一试

我需要添加自定义标题,但无法解决它。我正在尝试使用新的services.AddOpenApiDocument()而不是services.AddSwaggerDocument()。我想在我的整个API上添加这些自定义头,而不仅仅是一个方法或控制器。我试图添加一个操作处理器,但当我加载Swigger UI时,我收到以下错误“这是我在项目中实现的一个示例。对我来说,它工作正常:

接口“IOperationProcessor”的实现:


这终于对我起作用了Rico Suter直接提供的解决方案

试一试

而不是

Type = NJsonSchema.JsonObjectType.String
(我认为类型在OpenAPI3中已被弃用)


非常感谢这个帖子上的原始答案

由于NSwag的更新,我不得不对上述答案做一些小的更新

以下内容适用于我的版本(NSwag.Core:13.1.2,NJsonSchema:10.0.24):


我看到您的代码和我的代码之间的区别在于,您使用的是services.AddSwaggerDocument(),它在Swagger v2.0中生成文档(您的代码确实可以使用),但我正试图利用新的services.AddOpenApiDocument生成OAS v3.0,这对我来说是一个突破。在这里上传一个完整的测试解决方案:但我在这里做了一个测试,将“services.addswagerDocument”替换为“services.AddOpenApiDocument”,在Swager UI中显示以下消息:“无法呈现此组件,请参阅控制台。“显然,“services.AddOpenApiDocument”语句有问题。您使用NSwag有什么特殊原因吗?否则,如果需要,您可以尝试使用“Swashback”,我有一个使用“Swashback”的完整的Swagger实现示例“。其中,我还在标题中包含了一个自定义参数。对于我在这里研究的内容:,有对OpenAPI 3.0.Hey Silvair的支持,感谢您的回复。我最终发布了Rico Suter给我的问题解决方案。我为Swagger UI项目创建了一个问题,希望他们能够解决非描述性错误:。另外,在写这篇文章的时候,我相信Swashback仍然在为他们的开放式API规范进行预发布,这就是为什么我要利用NSwag的原因。
internal static void ConfigureServices(IServiceCollection services, IConfiguration configuration)
{

    // Register the Swagger services
    services.AddSwaggerDocument(config =>
    {
        // Adds the "token" parameter in the request header, to authorize access to the APIs
        config.OperationProcessors.Add(new AddRequiredHeaderParameter());

        config.PostProcess = document =>
        {
            document.Info.Version = "v1";
            document.Info.Title = "Title ";
            document.Info.Description = "API para geração de Documentos Fiscais Eletrônicos (DF-e) do projeto SPED";
            document.Info.TermsOfService = "None";
            document.Info.Contact = new NSwag.SwaggerContact
            {
                Name = "Name",
                Email = "Email ",
                Url = "Url "
            };
            document.Info.License = new NSwag.SwaggerLicense
            {
                Name = "Use under LICX",
                Url = "https://example.com/license"
            };

        };
    });            
}
Schema = new JsonSchema4 { Type = NJsonSchema.JsonObjectType.String }
Type = NJsonSchema.JsonObjectType.String
context.OperationDescription.Operation.Parameters.Add(
    new OpenApiParameter
    {
        Name = "HEADER_NAME",
        Kind = OpenApiParameterKind.Header,
        Schema = new JsonSchema { Type = JsonObjectType.String },
        IsRequired = true,
        Description = "Description",
        Default = "Default Value"
    });