我创建了一个包含多个区域的asp.net core 1.0网站项目。当文件超出wwwroot时,静态文件未找到/提供给SPA
在应用area`s的HomeController我有这样的动作:
public IActionResult Index()
{
string content = System.IO.File.ReadAllText("./Areas/Application/App/Index.html");
return base.Content(content, new MediaTypeHeaderValue("text/html"));
}
当HTML文件被返回许多404错误从没有发现的JavaScript库出现在浏览器中的文件。
带有所有.js文件的index.html是一个asp.net核心网站区域内的SPA。
该SPA构建+部署到websiteproject/areas/application/App文件夹。
当我构建+将SPA 部署到wwwroot文件夹时,则找到所有静态文件。
我想这意味着静态文件路径总是相对于wwwroot来使SPA工作。
问题1:有没有办法通过与WebHostBuilder类配置wwwroot文件夹作为wwwroot文件/应用程序路径:
.UseWebRoot("./wwwroot/app")
只是和明确为应用领域?
这意味着wwwroot的网站应该继续工作?
我会做到最好的事情是有2子文件夹的wwwroot文件夹:
- 网站
- 应用
,我想配置2 wwwroot`s路径的网站和应用的默认“区域”和显式应用区域。
问题2:我该怎么做?
更新1
据帕维尔评论我改变:
app.UseStaticFiles();
到:
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "Areas","Application", "App")),
RequestPath = new PathString("/Application")
});
但我仍然得到了.js文件相同的404错误就好像他们不会在wwwroot目录中一样可用?
在由单页的应用程序所要求的开发者控制台工具:
http://localhost:52159/vendor/reflect-metadata/Reflect.js (404)
在浏览器地址栏手动输入:
http://localhost:52159/Application/vendor/reflect-metadata/Reflect.js
这是否意味着在asp.net核心中的静态文件服务工作,但还有其他的东西不能以某种方式工作?我想我不应该改变SPA那将是愚蠢的东西...
我将我的文件结构的屏幕截图,你们更好地理解我的问题或可能发现我的用户错误...:
你看过这篇文章:https://docs.asp.net/en/latest/fundamentals/static-files.html? – Pawel
Pawel我更新了我的问题,并给你评论! – Pascal
好吧,我发现了这个问题。它是我的我的角2应用程序和index.html。在构建期间,路径vendor/angular2.js对于调试应用程序是正确的。但是当我启动asp.net网站时,由于Startup.cs中的静态文件路径变化,供应商的路径需要Application/vendor。即使当我更改index.html中的所有路径时,它也可以找到它无法找到的每个component.ts文件。似乎我必须创建一个新的system.js模块加载程序的问题,关于预先加载'应用程序'时,其模块加载每个组件等... – Pascal