Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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# NSwag';s AspNetCoreOperationSecurityScopeProcessor将所有端点标记为需要授权_C#_Asp.net Core_Swagger_Openapi_Nswag - Fatal编程技术网

C# NSwag';s AspNetCoreOperationSecurityScopeProcessor将所有端点标记为需要授权

C# NSwag';s AspNetCoreOperationSecurityScopeProcessor将所有端点标记为需要授权,c#,asp.net-core,swagger,openapi,nswag,C#,Asp.net Core,Swagger,Openapi,Nswag,我有如下设置的自定义授权方案: services.AddAuthentication(“ClientApp”) .AddScheme(“ClientApp”,空); 然后我有以下NSwag OpenAPI文档配置: services.AddOpenApiDocument((设置,提供程序)=> { settings.DocumentName=“openapi”; settings.AddSecurity(“ClientApp”、Enumerable.Empty()、新OpenApiSecuri

我有如下设置的自定义授权方案:

services.AddAuthentication(“ClientApp”)
.AddScheme(“ClientApp”,空);
然后我有以下NSwag OpenAPI文档配置:

services.AddOpenApiDocument((设置,提供程序)=>
{
settings.DocumentName=“openapi”;
settings.AddSecurity(“ClientApp”、Enumerable.Empty()、新OpenApiSecurityScheme
{
Type=OpenApiSecuritySchemeType.ApiKey,
Description=“用于客户端应用程序的身份验证,如Mmcc.Stats.TpsMonitor”,
Name=“X-Auth-Token”,
In=OpenApiSecurityApiKeyLocation.Header
});
settings.OperationProcessors.Add(
新的AspNetCoreOperationSecurityScopeProcessor(“客户端应用程序”)
);
// ...
}

我已经用
[AllowAnonymous]
[Authorize(AuthenticationSchemes=“ClientApp”)]
装饰了我控制器中的操作,但是NSwag将我的所有端点标记为在ReDoc UI中请求
ClientApp
授权,而不考虑装饰者。为什么?

我通过将代码更改为以下内容来修复它:

settings.DocumentProcessors.Add(
新的SecurityDefinitionAppender(“ClientApp”,
新的OpenApiSecurityScheme
{
Type=OpenApiSecuritySchemeType.ApiKey,
Description=“用于客户端应用程序的身份验证,如Mmcc.Stats.TpsMonitor”,
Name=“X-Auth-Token”,
In=OpenApiSecurityApiKeyLocation.Header
}));
settings.OperationProcessors.Add(新的AspNetCoreOperationSecurityScopeProcessor(“ClientApp”);

签出代码:有同样的问题,没有使用
.AddSecurity
,而是手动将
SecurityDefinitionAppender
添加到
DocumentProcessors
中,如上所示非常奇怪,看起来像
。AddSecurity
只是
设置的包装。DocumentProcessors.Add(新的SecurityDefinitionAppender(name,globalScopeNames,swaggerSecurityScheme));
但是直接使用它时有些东西不起作用。可能是我没有正确使用它,或者我弄糟了一些东西。