0

我已经阅读了几十个问题,但似乎没有一个对我有用。我没有使用 IIS。我将 ASP.Net Core 3.1 与 Kestrel 一起使用。

我有一个带有资源文件夹的 Razor 类库,因为我有 css、js、内容等文件夹。我使用这个库,所以我所有的常见 Web Api 项目都可以共享公共文件,而不是到处复制它们。为此,我按照此处的指南进行操作。请参阅那里了解如何配置启动。

这很好用,我可以通过例如访问这些文件localhost/css/site.css。在我的 cshtml 文件中,我可以通过执行包含该文件<link rel="stylesheet" href="~/css/site.css"/>

当我尝试从控制器访问这些文件时,就会出现问题。我有一个名为 content 的 CSS 姊妹文件夹,其中包含 json 文件。我可以通过转到 来查看该文件localhost/content/test.json,但我不知道如何从控制器访问它。

我想做的是发出 HTTP 请求~/content/test.json并下载其内容,但找不到路径。

我尝试使用Url.Content将相对路径映射到绝对路径,但它不起作用。

var url = Url.Content("~/content/test.json"); // spits out "/content/test.json"

我已经IWebHostEnvironment进入控制器并尝试访问ContentRootFileProviderand ContentRootPathWebRootPath但是这些路径也不正确。它们分别指向我当前运行的服务的 wwwroot 的父级和 wwwroot。

我尝试创建自己的文件提供程序:

var filesProvider = new ManifestEmbeddedFileProvider(GetType().Assembly, "resources");
var content = filesProvider.GetDirectoryContents("content");
var fileInfo = filesProvider.GetFileInfo(Path.Combine("content", "test.json"));

这成功地找到了文件并声称它存在,但fileInfo'sPhysicalPath总是null.

我只想做这样的事情:

string SomeMagicMapFunction(string s) => ????

var webClient = new WebClient();
var json = webClient.DownloadString(SomeMagicMapFunction("~/content/test.json"));

我哪里错了?任何指针表示赞赏。

4

0 回答 0