脚本/样式表链接从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

回到顶部