Мне очень нравится подход к новым веб-приложениям asp.net(asp.net 5\core 1.0) с папкой wwwroot, являющейся корневым и только статическими файлами, которые там обслуживаются.
Возможно через маршрутизацию или другую конфигурацию, чтобы иметь папку wwwroot в проекте asp.net 4.5, работает аналогичным образом, так что статические файлы обслуживаются только из него, а это "корень" веб-приложения для статического файлы?
(Часть моей мотивации в том, что у меня есть приложение angular, размещенное в проекте asp.net 5 в VS2015, но мне нужно переместить его в проект asp.net 4.5, но хотелось бы сохранить существующая структура на диске)
Попытка использования OWIN
Я попытался это сделать, используя пустой проект веб-приложения ASP.NET 4.5 и OWIN. Таким образом, у моей структуры папок есть мое приложение angular с основным файлом index.html в папке wwwroot в папке проекта. В корне проекта нет файлов HTML.
Я добавил OWIN через nuget и следующий загрузочный файл:
[assembly: OwinStartup(typeof(MyApp.UI.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
{
EnableDefaultFiles = true,
FileSystem = physicalFileSystem
};
options.StaticFileOptions.FileSystem = physicalFileSystem;
options.StaticFileOptions.ServeUnknownFileTypes = false;
options.DefaultFilesOptions.DefaultFileNames = new[] {"index.html"};
app.UseFileServer(options);
}
}
}
Это не удается - источник моего файла index.html загружается, когда я запускаю его, но все файлы css, js и т.д., с которыми он ссылается, терпят неудачу с 404. Еще хуже, если я добавлю gulpfile.js на root url загружает мой файл gulp из корня папки проекта. Это именно то, чего я пытаюсь избежать.
Любые идеи?