我正在使用该路由检索操作中的index.html文件:
/services/parts/{number}
来自 wwwroot 文件夹
...
return ContentResult(html, "text/html");
在wwwroot文件夹中,我有这样的结构:
wwwroot
|
---services
|
---parts
|
---1
|
---index.html
|
---2
|
---index.html
// and so on 3,4, ...
正如我之前所说,检索index.file并返回它没有问题,但是嵌入的index.html文件中的所有链接/脚本都无法加载,所以我得到了404这些链接。
然后我检查了为什么每条链接都有404:
请求的网址:网址:http://localhost:60000/services/parts/2/~/styles/vendor/bootstrap.min.css
index.html中的样式表链接:
<link rel="stylesheet" type="text/css" href="~/styles/vendor/bootstrap.min.css">
将样式表链接更改为:
<link rel="stylesheet" type="text/css" href="styles/vendor/bootstrap.min.css">
导致请求的网址,没有大的变化......
Requested url: URL:http://localhost:60000/services/parts/2/styles/vendor/bootstrap.min.css
为什么asp.net核心框架尝试从路由服务/部件/ 2下载bootstrap.min.css而不是从wwwroot文件夹下的子文件夹的styles / vendor文件夹下载?
如何正确修复?
答案 0 :(得分:1)
首先,浏览器实际上并不支持~
作为网址的一部分。这是一个文件系统遗留物,ASP.NET将替换为URL的文档根部分。但是,只有在ASP.NET处理HTML时才会发生这种情况,这意味着它必须是ASPX,CSHTML等。如果只是将一些HTML转储到响应中,那么就不会发生这种情况,~
遗骸,导致404。
在第二次尝试中,您使用的是相对网址。如果您有styles/vendor...
之类的网址,则会将其贴在导航栏中网址的末尾,即/service/parts/2/styles/vendor...
。
如果要指定文档根目录中的路径,则需要在URL前加/
。换句话说,/styles/vendor
。