Blazor WebAssembly:不支持提供的 ContentType;
Posted
技术标签:
【中文标题】Blazor WebAssembly:不支持提供的 ContentType;【英文标题】:Blazor WebAssembly: The provided ContentType is not supported; 【发布时间】:2020-09-16 19:08:06 【问题描述】:我今天通过以下命令行安装了 Blazor WebAssembly 示例项目 (WeatherForecast):
dotnet new blazorwasm --hosted -o ProjectName
我在调试模式下通过 Visual Studio 2019 安装后直接启动了 SPA。浏览器是:Chrome。浏览器显示应用程序,但是当我选择导航菜单“获取数据”时,什么也没有发生。 Chrome 显示 1 个错误:
Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
Unhandled exception rendering component: The provided ContentType is not supported; the supported types are 'application/json' and the structured syntax suffix 'application/+json'.
System.NotSupportedException: The provided ContentType is not supported; the supported types are 'application/json' and the structured syntax suffix 'application/+json'.
at System.Net.Http.Json.HttpContentJsonExtensions.ValidateContent (System.Net.Http.HttpContent content) <0x2e87f38 + 0x0009a> in <filename unknown>:0
at System.Net.Http.Json.HttpContentJsonExtensions.ReadFromJsonAsync[T] (System.Net.Http.HttpContent content, System.Text.Json.JsonSerializerOptions options, System.Threading.CancellationToken cancellationToken) <0x2e87d30 + 0x00006> in <filename unknown>:0
at System.Net.Http.Json.HttpClientJsonExtensions.GetFromJsonAsyncCore[T] (System.Threading.Tasks.Task`1[TResult] taskResponse, System.Text.Json.JsonSerializerOptions options, System.Threading.CancellationToken cancellationToken) <0x2e40838 + 0x0011c> in <filename unknown>:0
at BlazorIssue.Client.Pages.FetchData.OnInitializedAsync () [0x00033] in D:\Projects\BlazorIssue\Client\Pages\FetchData.razor:43
at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync () <0x2b8cb98 + 0x0013a> in <filename unknown>:0
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask (System.Threading.Tasks.Task taskToHandle) <0x2dd8340 + 0x000b6> in <filename unknown>:0
Chrome 显示以下请求标头:
上下文信息:
Chrome:V83.0.4103.61(64 位) Blazor:V3.2.0 Visual Studio:V16.6.0 DotNet V3.1.300 DotNet SDK:V3.1.300这很奇怪,因为这个示例项目的全新安装昨天没有问题。
【问题讨论】:
你能告诉我们dotnet --version
和dotnet --list-sdks
的输出吗?我们应该看到 3.1.300 吗?另外请确认各种 AspNetCore Blazor 参考的版本是什么,应该是Version="3.2.0"
我刚刚完成了同一个应用程序的设置。 WeatherForecast GET 应该是 content-type: application/json; charset=utf-8
而你的是 text/html
- 我怀疑它可能会返回一个错误页面。尝试直接在浏览器中运行https://localhost:44325/WeatherForecast
?
【参考方案1】:
虽然这对于得到“200 Ok”响应的 OP 来说并非如此,但如果您的 API 方法返回 null(我的方法抛出 DB 异常并返回 null 作为后备)。
我有“204 No Content”作为响应和“提供的 ContentType 不受支持;支持的类型是 'application/json' 和结构化语法后缀 'application/+json'。 "作为客户端的错误。
我想 null 看起来不像 json :-)
【讨论】:
【参考方案2】:如果客户端项目被指定为启动项目,这可能发生在 Web 程序集模板项目的 ASP.NET 托管版本中。确保将 Server 项目设置为 Startup 项目。
【讨论】:
我刚刚用我创建的模板进行了测试,这是正确的答案! 这完全让我发疯了 b/c 有时它会起作用。非常感谢! 也经常发生在我身上。解决方案有效,但是当您无法将其作为启动项目时如何调试客户端? 我也必须清除浏览器缓存/禁用缓存以上是关于Blazor WebAssembly:不支持提供的 ContentType;的主要内容,如果未能解决你的问题,请参考以下文章
Blazor解决Blazor WebAssembly跨域访问后台服务问题
支持 docker 的 Blazor WebAssembly 应用程序 (linux)