Blazor WebAssembly.NET6部署本地IIS遇Json异常求助
Blazor WebAssembly .NET 6 发布到IIS后JSON解析错误排查方案
这个ExpectedStartOfValueNotFound错误的核心是:Blazor客户端请求后端API时,收到的不是预期的JSON数据,而是HTML内容(通常是IIS的错误页面,比如404、500),错误信息里的<就是HTML标签的起始符。以下是具体排查步骤:
检查IIS站点物理路径配置
确保IIS站点的物理路径指向服务端项目的发布目录,而非客户端项目的dist目录。Blazor WASM的服务端项目负责托管静态客户端文件和API接口,若路径错误,API请求会直接返回404 HTML页面,触发JSON解析失败。验证API端点可用性
直接在浏览器访问API的完整路径(例如http://你的站点域名/api/你的接口名):- 若返回HTML错误页,先检查应用程序池配置:将.NET CLR版本设置为无托管代码,因为.NET 6依赖ASP.NET Core模块托管,无需传统IIS托管代码。
- 查看服务端
web.config的ASP.NET Core模块配置,确保自动生成的配置正确,示例:<aspNetCore processPath="dotnet" arguments=".\YourServerProject.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> - 开启服务端日志排查启动问题:将
stdoutLogEnabled设为true,站点目录下的logs文件夹会生成日志文件,可查看API启动失败的具体原因(如数据库连接字符串错误、依赖缺失等)。
确认CORS与客户端Base地址配置
即使是本地IIS部署,若客户端请求的Base地址与API地址不匹配,也可能触发跨域问题返回HTML错误:- 服务端
Program.cs中配置正确的CORS策略,允许站点域名:builder.Services.AddCors(options => { options.AddPolicy("AllowSite", policy => { policy.WithOrigins("http://你的站点域名") .AllowAnyHeader() .AllowAnyMethod(); }); }); app.UseCors("AllowSite"); - 客户端
Program.cs设置正确的API Base地址:builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://你的站点域名/") });
- 服务端
检查IIS身份验证设置
若API需要身份验证,确认IIS站点的身份验证选项:- 若API允许匿名访问,确保匿名身份验证已开启;
- 若使用Windows身份验证,需同步配置服务端的授权策略,避免返回401 HTML页面。
核对发布配置选项
在Visual Studio发布服务端项目时:- 确认目标框架为
.NET 6; - 检查数据库部署配置,确保连接字符串正确,避免数据库连接失败导致API无法启动。
- 确认目标框架为
内容的提问来源于stack exchange,提问作者Acrobatba
相关产品推荐
相关产品推荐

