.NET Framework Serveur de fichiers HTTP de base en lecture seule (ASP.NET Core)


Exemple

1 - Créez un dossier vide, il contiendra les fichiers créés dans les étapes suivantes.

2 - Créez un fichier nommé project.json avec le contenu suivant (ajustez le numéro de port et rootDirectory selon le cas):

{
  "dependencies": {
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final"
  },

  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel --server.urls http://localhost:60000"
  },

  "frameworks": {
    "dnxcore50": { }
  },

  "fileServer": {
    "rootDirectory": "c:\\users\\username\\Documents" 
  }
}

3 - Créez un fichier nommé Startup.cs avec le code suivant:

using System;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.FileProviders;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.StaticFiles;
using Microsoft.Extensions.Configuration;

public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        var builder = new ConfigurationBuilder();
        builder.AddJsonFile("project.json");
        var config = builder.Build();
        var rootDirectory = config["fileServer:rootDirectory"];
        Console.WriteLine("File server root directory: " + rootDirectory);

        var fileProvider = new PhysicalFileProvider(rootDirectory);

        var options = new StaticFileOptions();
        options.ServeUnknownFileTypes = true;
        options.FileProvider = fileProvider;
        options.OnPrepareResponse = context =>
        {
            context.Context.Response.ContentType = "application/octet-stream";
            context.Context.Response.Headers.Add(
                "Content-Disposition",
                $"Attachment; filename=\"{context.File.Name}\"");
        };
        
        app.UseStaticFiles(options);
    }
}

4 - Ouvrez une invite de commande, accédez au dossier et exécutez:

dnvm use 1.0.0-rc1-final -r coreclr -p
dnu restore

Remarque: ces commandes ne doivent être exécutées qu’une seule fois. Utilisez la dnvm list pour vérifier le nombre réel de la dernière version installée du CLR principal.

5 - Démarrer le serveur avec: dnx web . Les fichiers peuvent maintenant être demandés à l' http://localhost:60000/path/to/file.ext .

Pour plus de simplicité, les noms de fichiers sont supposés être tous ASCII (pour la partie nom de fichier dans l'en-tête Content-Disposition) et les erreurs d'accès aux fichiers ne sont pas gérées.