【问题标题】:a file with an html extension cannot be served in .net core 3.1.net core 3.1 无法提供带有 html 扩展名的文件
【发布时间】:2020-04-24 10:59:10
【问题描述】:

我刚刚创建了一个新的 .net core 3.1 Web 项目,并且能够成功运行它(显然正如人们所期望的那样)

但奇怪的是,当我将我的 Index.cshtml 文件中的部分标签助手添加到我知道存在的 html 文件中时:

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
    <partial name="~/PrerenderAssets/styles.html" />  @* <--------  this line*@ 
</div>

它会呈现一个异常,说它找不到它,如下面的屏幕截图所示:

这绝对用于在我之前工作过的 .net core 2.1 项目中工作,所以经过几个小时的研究后,我似乎无法找到 .net core 3.1 中的哪些变化导致了这个问题,或者我正在制作一个某处犯了愚蠢的错误?

您可以通过创建一个新的 .net core 3.1 Web 项目并在根目录中创建一个包含 html 文件的文件夹并尝试在 Index.cshtml 文件中呈现它来复制此问题。

有人可以在这里启发我吗?提前致谢。

【问题讨论】:

  • @JeroenvanLangen 我阅读了这些答案并理解了他们试图解释的内容,但并没有说明它如何解决手头的这个问题。这行确切的代码 &lt;partial name="~/PrerenderAssets/styles.html" /&gt; 在 .net core 2.1 项目中工作。
  • 并按照链接答案中的建议使用Url.Content会导致同样的问题。

标签: c# asp.net-core


【解决方案1】:

在 .net core 3.1 中找不到文件&lt;partial name="~/PrerenderAssets/styles.html" /&gt;

在 .net core 2.1 项目中工作

我可以重现同样的问题,而且似乎ViewEngine 会回复 3.0+ 中的构建时间编译视图(.cshtml 文件),这会导致问题。

在您的 3.1 项目中,请使用.cshtml 文件,而不是将 html 文件呈现为局部视图。

<partial name="~/PrerenderAssets/styles.cshtml"/>

另外,你可以参考这个讨论类似问题的github issue:https://github.com/dotnet/aspnetcore/issues/17650#issuecomment-562671539

【讨论】:

  • 感谢飞,非常感谢您的帮助!周五我花了一整天的时间试图弄清楚这个问题,但无济于事。我希望我可以投票这个答案更多而不是一次。
猜你喜欢
  • 2018-10-19
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多