Une option sera d'ajouter un IDocumentFilter à votre projet, voici quelques échantillons:
private class YamlDocumentFilter : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
{
string file = AppDomain.CurrentDomain.BaseDirectory + "swagger_yaml.txt";
if (!File.Exists(file))
{
var serializer = new YamlSerializer();
serializer.SerializeToFile(file, swaggerDoc);
}
}
}
...
private class YamlDocumentFilter : IDocumentFilter
{
public void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer)
{
string file = AppDomain.CurrentDomain.BaseDirectory + "swagger.yaml";
if (!File.Exists(file))
{
var serializer = new YamlDotNet.Serialization.Serializer();
using (var writer = new StringWriter())
{
serializer.Serialize(writer, swaggerDoc);
var stream = new StreamWriter(file);
stream.WriteLine(writer.ToString());
}
}
}
}
mais cela dépend de votre projet si l'ajout une référence supplémentaire à YamlSerializer ou YamlDotNet est acceptable.
Cela semble être la bonne façon de procéder, je n'ai pas été en mesure de le vérifier. Mais c'est peut-être parce que je me déploie dans un tissu de service. – Manny42
arghhh! le diable dans les détails (*** tissu de service ***) oui vous avez probablement besoin de modifier cet exemple ou essayer avec une dépendance différente ... – HelderSepu
J'ai ajouté un échantillon en utilisant YamlSerializer que le code semble beaucoup plus simple et je l'ai vérifié que cela fonctionne sur Azure: http://swashbuckletest.azurewebsites.net/swagger_yaml.txt – HelderSepu