I quite like the approach of the new asp.net (asp.net 5\\core 1.0) web apps with the wwwroot folder being the root and only static files in there being served up.
I believe I have a working method for doing this now. Took a bit of googling and experimentation, but in the end I came up with the following process:
Create a new ASP.NET 4.5 project in VS2015, selecting the Empty Template
Add OWIN references through nuget (Install-Package Microsoft.Owin.Host.SystemWeb and Microsoft.Owin.StaticFiles)
Add a startup file similar to this:
[assembly: OwinStartup(typeof(MyApp.Startup))]
namespace MyApp.UI
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
string root = AppDomain.CurrentDomain.BaseDirectory;
var physicalFileSystem = new PhysicalFileSystem(Path.Combine(root, "wwwroot"));
var options = new FileServerOptions
{
RequestPath = PathString.Empty,
EnableDefaultFiles = true,
FileSystem = physicalFileSystem
};
options.StaticFileOptions.FileSystem = physicalFileSystem;
options.StaticFileOptions.ServeUnknownFileTypes = false;
app.UseFileServer(options);
}
}
}
Add the following to your web.config file, to prevent IIS from serving static files you don't want it to, and force everything through the OWIN pipeline:
I'm always open to better suggestions on how to do this, but this at least seems to work for me.