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

Blazor WebAssembly发布到IIS后FetchData接口无法访问SQL Server问题

Blazor WebAssembly IIS部署接口异常排查方案

一、404接口不存在问题排查

  • 首先确认IIS服务器是否安装了.NET 5.0 Hosting Bundle,Blazor WebAssembly的宿主服务端运行依赖该组件,仅安装.NET Runtime或者SDK都无法正确映射API路由。注意要安装和你开发时版本完全一致的Hosting Bundle,安装完成后必须重启IIS服务生效。
  • 检查IIS站点的应用程序池.NET CLR版本是否设置为无托管代码,Blazor的宿主是ASP.NET Core,不需要托管CLR运行时。
  • 确认你发布的文件是否包含完整的服务端程序集,检查发布输出目录里是否有CART.Server.exe、web.config等文件,不要只上传Client端的静态文件。
  • 检查站点的路由配置,确认服务端Program.cs或者Startup.cs里是否包含app.MapControllers()的配置,没有这行配置会导致控制器路由无法注册,直接返回404。
  • 确认你访问的端口和IIS站点绑定的端口一致,开发环境默认用5000/5001端口,IIS部署后默认是80/443,如果你没有手动在IIS里绑定5001端口,访问该端口自然会返回404。

二、400错误排查

  • 你当前的控制器代码里异常捕获用的是Console.WriteLine,部署到IIS后控制台输出不会写入日志,你看不到异常信息是正常现象。建议把日志输出改为用注入的ILogger,比如把Console.WriteLine(ex.Message)改为_logger.LogError(ex, "接口执行异常"),然后在IIS里开启ASP.NET Core日志模块,查看具体的异常信息。
  • 检查你的连接字符串是否有权限访问数据库:
    • 如果用Windows身份验证,需要确认IIS应用程序池的运行身份有SQL Server的登录权限和对应数据库的读写权限
    • 如果用SQL身份验证,确认sa账号已启用,密码正确,且对应账号有数据库的读写权限
  • 你当前的Get接口逻辑存在问题:如果_context.Forecasts.ToListAsync()返回空集合,不会触发异常,会正常返回Ok结果,只有当EF Core执行报错的时候才会进入catch块。如果走到了最后的BadRequest分支,一定是触发了异常,只是你没读到日志而已。
  • 检查WeatherDbContext的注册配置,确认服务端Program.cs里已经正确注入了DbContext,并且连接字符串的键名和你配置里的一致,比如你用的是Default作为键名,注入的时候要对应读取Configuration.GetConnectionString("Default")。

三、额外验证方案

部署前先在服务器本地用命令行直接运行CART.Server.exe,然后在服务器本地浏览器访问http://localhost:5000/api/weatherforecast,如果能正常返回数据,说明程序本身没问题,是IIS配置的问题;如果本地运行也报错,就可以直接看到控制台的异常信息,快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:18:03