从 RCL 访问服务器上的静态文件

问题描述

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

我有一个带有资源文件夹的 Razor 类库,因为我有 css、js、content 等文件夹。我使用这个库,所以我所有的公共 Web Api 项目都可以共享公共文件,而不是到处复制它们。为此,我遵循了 here 中的指南。请参阅此处了解如何配置 Startup。

效果很好,我可以通过转到例如访问这些文件str()。在我的 cshtml 文件中,我可以通过执行 localhost/css/site.css

当我尝试从控制器访问这些文件时出现问题。我有一个名为 content 的 css 姊妹文件夹,其中包含 json 文件。我可以通过转到 <link rel="stylesheet" href="~/css/site.css"/> 查看该文件,但我不知道如何从控制器访问它。

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

我曾尝试使用 ~/content/test.json 将相对路径映射到绝对路径,但它不起作用。

Url.Content

我已将 var url = Url.Content("~/content/test.json"); // spits out "/content/test.json" 插入控制器并尝试访问 IWebHostEnvironmentContentRootFileProviderContentRootPath,但这些路径也不正确。它们分别指向我当前正在运行的服务的 wwwroot 的父级和 wwwroot。

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

WebrootPath

这成功地找到了文件并声称它存在,但 var filesProvider = new ManifestembeddedFileProvider(GetType().Assembly,"resources"); var content = filesProvider.GetDirectoryContents("content"); var fileInfo = filesProvider.GetFileInfo(Path.Combine("content","test.json")); fileInfo 始终是 PhysicalPath

我只想做这样的事情:

null

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)