'asp-src-include'无法解析文件

时间:2019-04-03 15:17:48

标签: asp.net-core webpack tag-helpers asp.net-core-tag-helpers

我正在使用ASP.Net Core,打字稿,React和Webpack构建一个Webapp。它称为Ui.WebApp。 React应用位于Ui.WebApp/ClientApp,并且webpack将输出构建到Ui.WebApp/ClientApp/dist。 在我的Startup.cs中,

app.UseStaticFiles(new StaticFileOptions {
        FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "ClientApp/dist"))
    }
);

这是有效的,即当我在_Layout.cshtml中将样式加载为<link rel="stylesheet" href="~/main.css" asp-append-version="true" type="text/css" />并实际位于Ui.WebApp/ClientApp/dist/main.css中时。它也适用于我作为<script src="~/main.js"></script>包含的脚本。

现在,我需要在Webpack中构建脚本,并使用名称中的哈希值,即main_968495a262da1789981f.js。 ASP.Net中的模式是使用<script asp-src-include="~/main_*.js"></script>。但是,从浏览器查看页面时,没有结果脚本标记,因为我假设ASP.Net找不到与该模式匹配的任何文件(但是我可以在文件浏览器中看到它)。

奇怪的是,当我手动将散列的js文件放入Ui.WebApp/wwwroot(否则我不会使用)时,脚本标记正确填写了。当我删除文件夹并刷新页面时,他们甚至都呆在那里。

因此,我假设ASP.Net在编译时验证了标记帮助器,因此看不到我在Startup.cs中所做的配置。

有什么方法可以使ASP.Net在运行时验证标记助手并选择正确的位置?

1 个答案:

答案 0 :(得分:0)

我刚遇到这个问题,我想我已经解决了。这里有很多示例显示使用波浪号,但是如果您查看智能提示,它表示该提示与您的Webroot设置有关。因此,您不需要波浪号,实际上,它似乎已将其打破。至少对于.net core 2.1而言,这是正确的。

对于您的示例,我终于使它像这样工作了:

<script asp-src-include="main_*.js"></script>

这是我的第一次尝试,不起作用:

<script type="text/javascript" asp-src-include="~/dist/**/*.js"></script>

但是当更改为它时,确实如此!

<script type="text/javascript" asp-src-include="dist/**/*.js"></script>

希望这可以为其他人节省大量的挫败感。