脚本/样式表链接从wwwroot的回报担任404
我与这条路的动作中检索index.html文件:脚本/样式表链接从wwwroot的回报担任404
/services/parts/{number}
从wwwroot文件夹
... return ContentResult(html, "text/html");
在wwwroot文件夹我有这样的结构:
wwwroot |
---services
|
---parts
|
---1
|
---index.html
|
---2
|
---index.html
// and so on 3,4, ...
因为我s在检索index.file并返回它是没有问题的,但是index.html文件中嵌入的所有链接/脚本无法加载,所以我得到这些链接的404。
然后我检查为什么为每个链接404:
请求的URL:URL: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,而不是从款式/供应商的文件夹中的wwwroot文件夹下的子文件夹被下载bootstrap.min.css?
我该如何解决这个问题?
回答:
首先,~
实际上不被浏览器支持作为URL的一部分。这是一个文件系统遗留问题,ASP.NET将用URL的文档根部分替代。但是,只有当ASP.NET处理HTML时,才会发生这种情况,这意味着它必须是ASPX,CSHTML等。如果您只是将一些HTML转储到响应中,则不会发生,并且~
仍然存在,从而导致a 404.
在第二次尝试中,您使用的是相对URL。当您有像styles/vendor...
这样的URL时,它将被粘贴到导航栏中URL的末尾,因此/service/parts/2/styles/vendor...
。
如果要从文档根目录指定路径,则需要在URL前加上/
。换句话说,/styles/vendor
。
以上是 脚本/样式表链接从wwwroot的回报担任404 的全部内容, 来源链接: utcz.com/qa/267358.html