首页 > 解决方案 > 即使在修改后也无法从 .NET Core 本地服务器提供某些文件扩展名在 applicationHost.config

问题描述

我正在建立一个网站,但遇到了无法访问/下载某些文件扩展名的问题,例如.py, .cs。例如,当我请求获取 .cs 文件时..

fetch("https://localhost:44310/userdata/texts/7/637381399366309280.cs")
        .then(resp => resp.blob())
        .then(blob => {
            success(blob)
        })
        .catch((res) => alert('oh no!'));

userdata文件夹是文件夹的直接子级wwwrootsuccess是将 blob 转换为文本的函数。对于一个.txt文件(与 .cs 文件位于同一文件夹中),一切正常,我得到了 .txt 文件包含的确切文本。但是对于一个.cs文件,我得到了标记文本——我网站的 index.html。奇怪的oh no!是没有警觉。我尝试使用托管在 github 上的一些随机 .cs 文件,它运行良好。

最初,我得到一个彻底的 404。当我尝试https://localhost:44310/userdata/texts/7/637381399366309280.cs在浏览器中打开链接 ( ) 时,我得到以下页面: 在此处输入图像描述

我做了一些研究,找到了 applicationHost.config 并删除了所有过滤后的扩展,看起来像这样:

<requestFiltering>
   <fileExtensions allowUnlisted="true" applyToWebDAV="false">
          <!--empty-->
   </fileExtensions>
   ....
</requestFiltering>

现在我不再得到404了。但success(blob)返回标记文本 - 我网站的 index.html。(我使用 Reactjs,我注意到当 fetch 出现问题时会发生这种情况。)当我尝试在新选项卡中打开 url 时,我不再得到requestFiltering错误页面。而是加载该站点的主页。

所以我真的很困惑。我没有得到 404,但我似乎也没有得到文件。修改requestFiltering更改的内容,但似乎我还需要做其他事情。请帮忙。

标签: c#reactjsasp.net-corehttp-status-code-404applicationhost

解决方案


事实证明,除了<requestFiltering>在 applicationHost.config 文件中编辑之外,我还必须ServeUnknownFileTypes在 startUp 类中进行编辑。

app.UseStaticFiles(new StaticFileOptions
{
   ServeUnknownFileTypes = true,
   DefaultContentType = "text/plain"
});

查看此答案以了解更多信息。


推荐阅读