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
andMicrosoft.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:
<system.webServer> <handlers> <remove name="StaticFile"/> <add name="Owin" verb="" path="*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler, Microsoft.Owin.Host.SystemWeb"/> </handlers> </system.webServer>
I’m always open to better suggestions on how to do this, but this at least seems to work for me.