Blazor服务器-静态文件不';非开发环境中的t链接

Blazor服务器-静态文件不';非开发环境中的t链接,blazor,blazor-server-side,blazored,Blazor,Blazor Server Side,Blazored,似乎在标准Blazor服务器应用程序中,除了开发环境之外,没有正确引用_内容文件夹项。例如,此引用在任何非开发环境中都会失败: 从_Host.cshtml: <link href="_content/Blazored.Typeahead/blazored-typeahead.css" rel="stylesheet" /> 要重新编程,请以Blazored toast lib为例(但任何静态文件引用似乎都存在此问题): 创建新Blazor服务器项目(dotnet新Blazor服

似乎在标准Blazor服务器应用程序中,除了开发环境之外,没有正确引用_内容文件夹项。例如,此引用在任何非开发环境中都会失败:

从_Host.cshtml:

<link href="_content/Blazored.Typeahead/blazored-typeahead.css" rel="stylesheet" />

要重新编程,请以Blazored toast lib为例(但任何静态文件引用似乎都存在此问题):

创建新Blazor服务器项目(dotnet新Blazor服务器)

  • 添加所有必要的Blazored/Toast元素,包括用于演示的代码 祝酒词
  • 测试toast是否正在工作 launchSettings.json ASPNETCORE_环境,用于登台、生产、, 或者发展以外的任何东西
  • 再次运行程序(使用ISS expresslocaldebug),注意css格式不正确
  • 更改调试设置以改用Kestrel(更改IIS Express 下拉至BlazorApp1或类似项)
  • 注意,对于红隼来说,css是 工作正常

  • 我遗漏了什么可以让此引用在其他环境中工作

    当应用程序发布时,从Razor类库中使用静态资产是开箱即用的。您只需像以前那样通过
    包含静态内容

    但是,从生成输出(dotnet运行)或通过Visual Studio中的F5运行应用程序时,必须确保为给定环境启用了StaticWebAsset功能

    默认情况下,它仅对开发环境启用。通过确保调用
    usesticfiles
    并在
    程序中调用
    usesticwebassets
    ,您可以无条件地打开该功能。CreateHostBuilder

    因此,请确保您的应用程序具有:

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        ...
    
        app.UseStaticFiles();
    
        ...
    }
    
    在Program.cs中,您应该

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStaticWebAssets();
                webBuilder.UseStartup<Startup>();
            });
    
    公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
    Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder=>
    {
    webBuilder.UseStaticWebAssets();
    webBuilder.UseStartup();
    });
    
    谢谢你的回答,我会在周一回到办公室后再试一次。我有app.UseStaticFiles(),但没有.UserStaticWebAssets()。让我感到奇怪的是,从代码中,没有任何地方可以看出这是登台和生产所需要的,而不是开发环境所需要的。这些代码更改都没有引用环境。上的文档中没有为我+1.提供更多相关详细信息。。在内容样式和脚本资源上获得了404,但只有在登台和生产环境运行的情况下才能获得404。添加UseStaticWebAssets()后问题得到解决显然我的问题未经我的许可就被编辑了,添加了奇怪的格式-这是新事物吗,现在任何人都可以编辑你的问题了?我认为可以格式化问题。如果你不喜欢这个,我很抱歉。“现在任何人都可以编辑您的问题?”:可以。具有足够rep的每个人都可以编辑其他线程。如果你想回顾这篇文章,将会有一个问题。对不起,我不是故意批评你,我很感激你的意图,这让我很失望。我想格式化没有什么坏处,只是为了可读性,我更喜欢将段落保持为一种字体/大小,等等。代码段使用不同的字体。我看到了历史记录,但看不到任何拒绝或撤消更改的方法。没问题,只是我觉得奇怪,其他非版主成员可以覆盖OP的内容。我将其回滚到您的原始内容。