我已经阅读了几十个问题,但似乎没有一个对我有用。我没有使用 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
进入控制器并尝试访问ContentRootFileProvider
and ContentRootPath
,WebRootPath
但是这些路径也不正确。它们分别指向我当前运行的服务的 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"));
我哪里错了?任何指针表示赞赏。