How to set default static web page for Katana/Owin self hosted app?
a more detailed version of fra's answer:
1- NuGet to install Microsoft.Owin.StaticFiles (I assumed you already installed Microsoft.AspNet.WebApi.OwinSelfHost via NuGet)
2- Create a single directory in your solution (in Visual Studio), and put all your client files in it, e.g.
+Web--+images--+pages------page1------page2--+scripts--+css---index.html
Note: there is a root directory (web) that contains all other directories, and the index.html under the root directly.
3- Now, in the same class that contains your web api routing configuration, add the following code:
var physicalFileSystem = new PhysicalFileSystem(@".\Web"); //. = root, Web = your physical directory that contains all other static content, see prev stepvar options = new FileServerOptions{ EnableDefaultFiles = true, FileSystem = physicalFileSystem }; options.StaticFileOptions.FileSystem = physicalFileSystem; options.StaticFileOptions.ServeUnknownFileTypes = true; options.DefaultFilesOptions.DefaultFileNames = new[] { "index.html" }; //put whatever default pages you like here appBuilder.UseFileServer(options);
4- One more step for the prev code to work: make sure to set the Copy to output directory
property of all files in Web directory (and all nested directories) is set to Copy Always
[select the file | press F4, or right-click then properties | go to Copy to output directory
]
That's all :)
I do it this way:
var physicalFileSystem = new PhysicalFileSystem(webPath);var options = new FileServerOptions { EnableDefaultFiles = true, FileSystem = physicalFileSystem }; options.StaticFileOptions.FileSystem = physicalFileSystem; options.StaticFileOptions.ServeUnknownFileTypes = true; options.DefaultFilesOptions.DefaultFileNames = new[] { "index.html" }; appBuilder.UseFileServer(options);
Maybe it's a late answer, but if you need just a default document, less code will work:
builder.UseDefaultFiles(new DefaultFilesOptions{ DefaultFileNames = Enumerable.Repeat("index.html", 1).ToList()});
It should be called before builder.UseStaticFiles
for whatever reason.
Version of Microsoft.Owin.StaticFiles
is 3.0.1