Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
Api 使用Swashback V5从代码生成swagger.json_Api_Asp.net Core_Swagger_Swashbuckle_Swashbuckle.aspnetcore - Fatal编程技术网

Api 使用Swashback V5从代码生成swagger.json

Api 使用Swashback V5从代码生成swagger.json,api,asp.net-core,swagger,swashbuckle,swashbuckle.aspnetcore,Api,Asp.net Core,Swagger,Swashbuckle,Swashbuckle.aspnetcore,我使用的是Swashback AspNetCore v4.x.x,升级到v5.1.x.x。但是我在中使用的代码不再工作了,因为缺少类“SwaggerContractResolver” 我尝试的目标是在RESTfull API的代码中生成swagger.json: publicstaticstringgenerateswagger(此iWebHostWebHost、stringdocName、stringbasePath) { var sw=(ISwaggerProvider)webhost.Se

我使用的是Swashback AspNetCore v4.x.x,升级到v5.1.x.x。但是我在中使用的代码不再工作了,因为缺少类“SwaggerContractResolver”

我尝试的目标是在RESTfull API的代码中生成swagger.json:

publicstaticstringgenerateswagger(此iWebHostWebHost、stringdocName、stringbasePath)
{
var sw=(ISwaggerProvider)webhost.Services.GetService(typeof(ISwaggerProvider));
var doc=sw.GetSwagger(docName,null,basePath);
var json=JsonConvert.SerializeObject(
博士,
格式。缩进,
新JsonSerializerSettings
{
NullValueHandling=NullValueHandling.Ignore,
ContractResolver=新的Swagger ContractResolver(新的JsonSerializerSettings())
}
);
返回json;
}
string json=GenerateSwagger(webhost、docName、url);
字符串路径=path.Combine(路径,docName);
File.writealText(路径+“.json”,json);

如何才能像v4一样工作,但使用新版本的Swashback AspnetCore?

对于Swashback V5,您可以使用.NET Core CLI生成swagger合约:

但这只适用于.NET核心API。对于.NET Framework,您可以使用以下方法:

publicstaticstringgenerateswagger(此iWebHostWebHost、stringdocName、stringbasePath)
{
var sw=webhost.Services.GetRequiredService();
var doc=sw.GetSwagger(docName,null,basePath);
使用(var streamWriter=new StringWriter())
{
var writer=newopenapijsonwriter(streamWriter);
文件序列化ASV3(编写器);
返回streamWriter.ToString();
}
}
如果您想要YAML swagger合同,可以将
OpenApiJsonWriter
切换到
OpenApiYamlWriter

如果您想要V2大摇大摆的合同,可以将
SerializeAsV3
切换到
SerializeAsV2