找不到 blazor.server.js 文件

Mik*_*sas 18 asp.net-mvc blazor asp.net-core-3.0

我创建了一个新的 ASP.NET Core 3.0 Web 应用程序并选择了模型-视图-控制器选项。我想添加 Blazor 服务器端,所以我将以下内容添加到 Startup.cs 文件中。

services.AddServerSideBlazor(); 
endpoints.MapBlazorHub();
Run Code Online (Sandbox Code Playgroud)

并添加了脚本文件

<script src="_framework/blazor.server.js"></script>
Run Code Online (Sandbox Code Playgroud)

在我的布局文件中。

我创建了一个简单的组件来显示我在文本框中输入的内容,并将该组件添加到我的Index.cshtml视图中。它在 Visual Studio 中工作,但是当我将它推送到我的内部 2016 服务器时,该组件已呈现,但文本未显示。该应用程序似乎无法找到该blazor.server.js文件。

我是否缺少其他一些部署步骤来推送 JS 文件?

Mik*_*sas 15

终于想通了,只好<base href="~/" />在head部分添加“_Layout.cshtml”。

在这里找到了答案


Tom*_*ang 9

就我而言,

app.UseStaticFiles(new StaticFileOptions
{
    ServeUnknownFileTypes = true,
    DefaultContentType = "application/octet-stream"
});
Run Code Online (Sandbox Code Playgroud)

是什么导致了这个问题。替换为:

app.UseStaticFiles();
Run Code Online (Sandbox Code Playgroud)

解决了这个问题。我想也许DefaultContentType是问题所在。

任何人都知道为什么会这样,请更新此答案。

  • 汤姆,你的回答让我找到了正确的方向。Blazor 会调整静态文件设置,如果您使用自己的 StaticFileOptions 覆盖它们,则会破坏 Blazor。您可以通过第二次调用 UseStaticFiles 来修复此问题。这将在未来版本中修复。请参阅 https://github.com/dotnet/aspnetcore/issues/19578 (6认同)

小智 6

https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/static-files?view=aspnetcore-5.0

在 Startup.Configure (Startup.cs) 中使用两次对 UseStaticFiles 的调用:

在第一次调用时使用 StaticFileOptions 配置自定义文件提供程序。第二个中间件提供 blazor.server.js,它使用 Blazor 框架提供的默认静态文件配置。C#

using Microsoft.AspNetCore.StaticFiles;

...

var provider = new FileExtensionContentTypeProvider();
provider.Mappings["{EXTENSION}"] = "{CONTENT TYPE}";

app.UseStaticFiles(new StaticFileOptions { ContentTypeProvider = provider });
app.UseStaticFiles();
Run Code Online (Sandbox Code Playgroud)