.NET Framework Basic read-only HTTP file server (ASP.NET Core)


1 - Create an empty folder, it will contain the files created in the next steps.

2 - Create a file named project.json with the following content (adjust the port number and rootDirectory as appropriate):

  "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 - Create a file named Startup.cs with the following code:

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();
        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";
                $"Attachment; filename=\"{context.File.Name}\"");

4 - Open a command prompt, navigate to the folder and execute:

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

Note: These commands need to be run only once. Use dnvm list to check the actual number of the latest installed version of the core CLR.

5 - Start the server with: dnx web. Files can now be requested at http://localhost:60000/path/to/file.ext.

For simplicity, filenames are assumed to be all ASCII (for the filename part in the Content-Disposition header) and file access errors are not handled.