首页 > 解决方案 > .NET 核心 NToastNotify nuget 包在 /_content/NToastNotify/toastr.js?7.0.0.0 上返回 404,但仅在 PROD 上

问题描述

我将 NToastNotify nuget 包 (v7.0.0) 与.NET core 3.1.

 services.AddMvc(options =>
 {
     options.EnableEndpointRouting = false;
     options.Conventions.Add(new RouteTokenTransformerConvention(
         new SlugifyParameterTransformer()));
  })
  .AddNToastNotifyToastr(new ToastrOptions
  {
      NewestOnTop = true,
      TimeOut = 10000,
      ProgressBar = false,
      PositionClass = ToastPositions.BottomRight
  }, new NToastNotifyOption()
  {
      ScriptSrc = "/js/toastr.min.js",
      StyleHref = "/css/toastr.min.css"
  });

app.UseNToastNotify();在方法中添加了中间件,Configure并在布局页面的 body 标记中添加了@await Component.InvokeAsync("NToastNotify")位。

一切都在开发中完美运行,但在生产中,当它尝试下载JS文件时返回 404。如您所见,我也尝试覆盖脚本源,但仍然没有运气。

@await Component.InvokeAsync("NToastNotify")部分实际上将呈现以下内容

<script src=/_content/NToastNotify/toastr.js?7.0.0.0 type="text/javascript"></script>
<script>
    if (nToastNotify) {
        nToastNotify.init({
            firstLoadEvent: 'DOMContentLoaded',
            messages: [],
            responseHeaderKey: 'X-NToastNotify-Messages',
            requestHeaderKey: 'X-Requested-With',
            libraryDetails:{"varName":"toastr","scriptSrc":"https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js","styleHref":"https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css","options":{"positionClass":"toast-bottom-right","timeOut":10000,"newestOnTop":true,"progressBar":false,"type":"success"}},
            disableAjaxToasts:false
        });
    };
</script>

我会得到以下两个错误GET https://xy.hu/_content/NToastNotify/toastr.js?7.0.0.0 net::ERR_ABORTED 404Uncaught ReferenceError: nToastNotify is not defined

整个站点通过 Cloudflare 运行。我不确定这是否是它在生产中不起作用的原因。顺便说一下,这个 _content 文件夹在任何环境中都不存在,并且通过 nuget 包以某种方式下载。

标签: asp.net-mvcasp.net-core

解决方案


根据错误信息,我猜这个问题可能与 Cloudflare 托管文件夹路径有关。为避免此问题,我建议您可以尝试以下解决方法。

您可以在视图中手动添加引用,如下所示:

<script src=https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js?7.0.0.0 type="text/javascript"></script>

或者直接下载脚本并添加相对路径。


推荐阅读