C# 获取blazor.webassembly.js的404 NotFound(_frameworkfiles NotFound)
我们搜索了这方面的其他问题,发现它们似乎适用于站点部署后的情况。 在VS2019中尝试调试时会发生这种情况。 到目前为止,我们检查的内容包括: applicationhost.config看起来是正确的,虚拟目录路径确实是“客户端”应用程序的根目录 wwwroot文件夹是物理路径的子文件夹C# 获取blazor.webassembly.js的404 NotFound(_frameworkfiles NotFound),c#,blazor,webassembly,.net-5,C#,Blazor,Webassembly,.net 5,我们搜索了这方面的其他问题,发现它们似乎适用于站点部署后的情况。 在VS2019中尝试调试时会发生这种情况。 到目前为止,我们检查的内容包括: applicationhost.config看起来是正确的,虚拟目录路径确实是“客户端”应用程序的根目录 wwwroot文件夹是物理路径的子文件夹 <site name="Eclypses.MTE.Protoype.Server" id="8"> <application path=&q
<site name="Eclypses.MTE.Protoype.Server" id="8">
<application path="/" applicationPool="Eclypses.MTE.Protoype.Server AppPool">
<virtualDirectory path="/" physicalPath="D:\git_src\mteutils_dotnetcore\eclypses-commander-prototype\Eclypses.MTE.Prototype\Client" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:50413:localhost" />
</bindings>
</site>
服务器的launchsettings.json文件为:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:50413",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"use64Bit": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}"
},
"Eclypses.MTE.Prototype.Server": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}"
}
}
}
通过取消选中属性页上的“启用SSL”复选框,我们将两者上的sslPort更改为“0”。(我们尝试使用SSL,但得到了相同的错误)
我们还注释掉了服务器启动类中的行:
// app.UseHttpsRedirection();
因此,我们应该在VS2019中运行纯http环境(目前版本为16.8.5)
最后,我们确保客户端和服务器都使用最新版本的适当NuGet软件包:
客户:
客户端的Program.cs类按以下顺序配置:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseWebAssemblyDebugging();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseBlazorFrameworkFiles();
app.UseStaticFiles();
// app.UseHttpsRedirection();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapFallbackToFile("index.html");
});
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
builder.Services
.AddBlazoredModal()
.AddOptions()
.AddAuthorizationCore()
.AddSingleton<ISessionStorageService, SessionStorageService>() // Wrapper around javascript session storage methods
.AddScoped<IAuthService, AuthService>() // Wrapper around API calls to server to authenticate a login
.AddScoped<AuthenticationStateProvider, MyWebAuthenticationStateProvider>() // Creates a user principal
.AddSingleton<StateContainer>(); // Wrapper around some local "state" values
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
await builder.Build().RunAsync();
var builder=WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add(“应用程序”);
建筑商服务
.AddBlazoredModal()
.AddOptions()
.AddAuthorizationCore()
.AddSingleton()//javascript会话存储方法的包装器
.addScope()//包装对服务器的API调用以验证登录
.addScope()//创建用户主体
.AddSingleton();//包装一些本地“状态”值
addScope(sp=>newHttpClient{BaseAddress=newURI(builder.HostenEnvironment.BaseAddress)});
等待builder.Build().RunAsync();
在研究了多个帖子之后,我们觉得上面的内容是我们需要检查的。从我们的理解来看,它们看起来是正确的
我们仍然可以从_framework和_content文件夹中加载任何内容,更重要的是,“blazor.webassembly.js”文件根本不存在
启动调试会话时,VS中会出现一个图标
“脚本文档”
在它里面是一个图标
“localhost:50413/js/sessionStorage.js”
因此,wwwroot似乎是由运行时找到的,但是没有“_framework”或“_content”文件夹,因此它无法加载我的blazor WASM文件。
当我们终止调试会话时,此图标将消失
此外,如果我们在Chrome中查看network选项卡,我们会看到下载的wwwroot文件的内容带有一个“200”,但是blazor.webassembly.js(应该在_框架中)得到一个404
这里的任何指导都是值得赞赏的,基本问题是“我们为什么要获得“404”的框架和内容文件?请确保您的服务器包含对您的客户的项目引用。 还要确保您客户的csproj文件使用
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
net5.0
确保您的服务器包含对客户端的项目引用。
还要确保您客户的csproj文件使用
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
net5.0
你能确认你的调试启动项目是WASM服务器项目吗?我可能错过了你所有的细节。基本上,
是要使用的库,使用的是app.UseBlazorFrameworkFiles()
应该映射到\u Framework
。启动应用程序时,如果您尝试直接转到URL,您会看到什么http://localhost:50413/_framework/blazor.webassembly.js?获取404。我不仅将eclypse.MTE.Prototype.Server作为启动项目(失败),而且还单击了“服务器”项目,并单击“调试”,但出现相同的故障。我在blazor.webassembly.js文件stillapp.UseBlazorFrameworkFiles()中得到了404;服务器上my startup.cs中的第87行是否正常,找到问题并为其他人的利益发帖。似乎我的服务器项目不知何故没有对我的客户机的“项目引用”。我修复了这个问题,然后再次检查了Can you just,确认要调试的启动项目是WASM服务器项目。我可能错过了你所有的细节。基本上,
是要使用和使用的库app.UseBlazorFrameworkFiles()代码>应该映射到\u框架
。当您启动应用程序时,如果您尝试直接转到URLhttp://localhost:50413/_framework/blazor.webassembly.js
?得到一个404。我不仅将Eclypses.MTE.Prototype.Server作为我的启动项目(失败),而且我还单击了“服务器”项目并单击了“调试”,但同样失败。我在blazor.webassembly.js文件stillapp.UseBlazorFrameworkFiles()中得到了404;服务器上my startup.cs中的第87行是否正常,找到问题并为其他人的利益发帖。似乎我的服务器项目不知何故没有对我的客户机的“项目引用”。我把它修好了,然后重新检查了
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
</Project>
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseWebAssemblyDebugging();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseBlazorFrameworkFiles();
app.UseStaticFiles();
// app.UseHttpsRedirection();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapFallbackToFile("index.html");
});
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
builder.Services
.AddBlazoredModal()
.AddOptions()
.AddAuthorizationCore()
.AddSingleton<ISessionStorageService, SessionStorageService>() // Wrapper around javascript session storage methods
.AddScoped<IAuthService, AuthService>() // Wrapper around API calls to server to authenticate a login
.AddScoped<AuthenticationStateProvider, MyWebAuthenticationStateProvider>() // Creates a user principal
.AddSingleton<StateContainer>(); // Wrapper around some local "state" values
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
await builder.Build().RunAsync();
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>