在ASP.NET 4.5项目中使用wwwroot文件夹(ASP.NET Core风格)
在ASP.NET 4.5项目中使用wwwroot文件夹(ASP.NET Core风格)
我非常喜欢新的asp.net(asp.net 5\core 1.0)web应用程序的方法,其中wwwroot文件夹是根目录,只有其中的静态文件被提供。是否可以通过路由或其他配置方式,在asp.net 4.5项目中使wwwroot文件夹以类似的方式工作,即只提供静态文件,并且它是静态文件的web应用程序的“根目录”?
(我提出这个问题的部分原因是我在VS2015的asp.net 5项目中托管了一个angular应用程序,但我需要将其移动到asp.net 4.5项目中,但希望保持现有的磁盘结构)
尝试使用OWIN
我尝试使用一个空的ASP.NET 4.5 Web应用程序项目和OWIN来实现这一点。所以我的文件夹结构中有一个angular应用程序,其中的主index.html文件位于项目文件夹中的wwwroot文件夹中。项目的根目录中没有HTML文件。
我通过NuGet添加了OWIN和以下启动文件:
[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附加到根URL上,它会从项目文件夹的根目录加载我的gulp文件。这正是我试图避免的问题。
有什么想法吗?