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

.NET 6迁移后ServiceStack 5.13.0的metadata与swagger-ui返回500错误

问题根因

从异常堆栈可直接定位,报错来源于Visual Studio配套的Browser Link(浏览器链接)和.NET热重载中间件,和ServiceStack本身无直接关联。
该异常仅触发于返回text/html类型的请求:/metadata、/swagger-ui均为HTML页面,会被上述中间件拦截注入脚本;其余业务接口返回JSON/XML格式响应,不会被拦截所以访问正常。

解决方案

快速验证方案

  • 不通过Visual Studio启动,直接在项目目录执行命令dotnet run启动服务,再次访问两个页面验证是否恢复正常。
  • 若仍使用VS启动,点击顶部工具栏「热重载」按钮旁的下拉箭头,取消勾选「热重载在浏览器加载时启用」,同时关闭「浏览器链接」功能后重启项目即可。

永久修复方案

  1. 调整Program.cs的中间件注册顺序,将系统内置中间件放在ServiceStack注册之前:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

// 先注册系统内置中间件
if (!app.Environment.IsDevelopment())
{
    app.UseHsts();
    app.UseHttpsRedirection();
}
// 再注册ServiceStack
app.UseServiceStack(new AppHost(builder.Configuration["Environment"]));

app.Run();
  1. 若调整顺序后仍报错,可在Properties/launchSettings.json对应启动配置的environmentVariables节点添加配置,显式禁用浏览器刷新中间件:
"ASPNETCORE_BROWSER_REFRESH": "false"
验证方法

访问/metadata/json路径,若能正常返回JSON格式的元数据内容,说明ServiceStack的元数据能力完全正常,问题完全出在前端页面的中间件拦截逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:24:03