You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同MSI安装的ASP.NET Core Windows服务:一台正常一台Blazor页面JSON解析报错

问题根源

报错的核心原因是:Blazor WASM应用调用API时,报错机器返回的是text/html类型内容(而非预期的application/json),且内容以HTML标签起始符<开头,导致JSON反序列化器无法识别,抛出ExpectedStartOfValueNotFound异常。这种情况通常意味着API请求未返回正常JSON数据,而是返回了HTML格式的错误页面(比如404、500错误页)。

排查与解决步骤

1. 捕获API的实际返回内容

修改ItemService.GetItems()方法,获取API返回的原始错误内容,明确具体问题:

public async Task<List<Item>> GetItems()
{
    var apiUrl = "api/items"; // 替换为你的实际API路由
    var response = await _httpClient.GetAsync(apiUrl);

    // 验证响应状态,捕获错误详情
    if (!response.IsSuccessStatusCode)
    {
        var errorContent = await response.Content.ReadAsStringAsync();
        Console.WriteLine($"API请求失败:状态码={response.StatusCode},内容={errorContent}");
        throw new InvalidOperationException($"API调用失败,返回内容:{errorContent}");
    }

    return await response.Content.ReadFromJsonAsync<List<Item>>();
}

运行后查看浏览器控制台输出,即可判断是404(路由不存在)、500(服务器内部错误)还是其他问题。

2. 检查Windows服务状态与配置

  • 确认报错机器上的Windows服务已正常启动,右键服务→属性,检查运行身份是否拥有访问数据库、监听端口的足够权限。
  • 对比两台机器的appsettings.json配置,重点验证数据库连接字符串是否正确,确保报错机器能正常连接数据库。
  • 检查服务监听端口是否被占用:打开命令提示符,执行netstat -ano | findstr :[你的服务端口],确认端口未被其他程序占用。

3. 直接访问API端点验证

在报错机器上,用浏览器或Postman直接访问API地址(比如http://localhost:[端口]/api/items):

  • 若返回404错误:检查服务器端API控制器路由是否正确,确认Program.cs中是否调用了app.MapControllers()映射API端点。
  • 若返回500错误:打开Windows事件查看器→Windows日志→应用程序日志,查找服务抛出的异常信息,通常是数据库连接失败、依赖项初始化错误等原因。

4. 验证MSI安装后的环境一致性

  • 确认两台机器安装的ASP.NET Core Runtime版本一致,报错机器可能缺少对应版本的运行时。
  • 检查MSI安装后的文件完整性,特别是服务器端程序集、配置文件是否和正常机器一致。

5. 启用详细日志排查

在服务器端Program.cs中添加文件日志,记录服务启动和请求处理的详细信息:

using Serilog;

var builder = WebApplication.CreateBuilder(args);

// 配置文件日志
Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Information()
    .WriteTo.File("logs/service-log-.txt", rollingInterval: RollingInterval.Day)
    .CreateLogger();

builder.Logging.AddSerilog();

// 其他配置代码...

需先安装NuGet包:Serilog.AspNetCore和Serilog.Sinks.File,之后查看日志文件即可定位服务启动或请求处理中的具体错误。

内容的提问来源于stack exchange,提问作者Sarahrb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:31:23