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

Blazor项目调用PostgreSQL遇System.Net.NameResolution平台不支持错误

问题解决:Blazor WASM中调用Domain层数据库服务抛出PlatformNotSupportedException

错误原因

Blazor WebAssembly运行在浏览器沙箱环境中,不支持直接进行DNS解析(System.Net.NameResolution),同时浏览器安全策略禁止前端直接连接数据库。你当前的架构中,Blazor Dashboard直接引用Domain层服务,该服务通过EF Core + Npgsql直接连接PostgreSQL,完全违反WASM运行限制,因此触发此错误。

解决步骤

  • 调整架构,通过现有Api层中转数据库操作
    放弃在WASM项目中直接调用Domain层的数据库服务,改为让Dashboard通过HTTP请求调用Api层接口,由Api层负责调用Domain和Infrastructure层处理数据库逻辑——这是Blazor WASM应用的标准架构模式。
  • 移除Dashboard项目对Domain、Infrastructure层的直接引用
    这些层包含的数据库驱动、EF Core依赖不支持WASM运行时,移除引用可避免不必要的编译和运行时问题。

代码示例

  1. Api层新增接口控制器
[ApiController]
[Route("api/auction-events")]
public class AuctionEventsController : ControllerBase
{
    private readonly AuctionEventDataService _dataService;

    public AuctionEventsController(AuctionEventDataService dataService)
    {
        _dataService = dataService;
    }

    [HttpGet]
    public async Task<IActionResult> GetEvents(
        [FromQuery] int pageCount,
        [FromQuery] int page,
        [FromQuery] string provider,
        [FromQuery] string city)
    {
        var eventDtos = await _dataService.GetEventDtosByName(pageCount, page, provider, city);
        return Ok(eventDtos);
    }
}
  1. 修改Dashboard的EventService
    将直接调用Domain服务改为通过HttpClient调用Api接口:
public class EventService
{
    private readonly HttpClient _httpClient;

    public EventService(HttpClient httpClient)
    {
        _httpClient = httpClient;
    }

    public async Task<IEnumerable<EventDto>> GetEventsByProviderCity(
        int pageCount, int page, string provider, string location)
    {
        var url = $"api/auction-events?pageCount={pageCount}&page={page}&provider={Uri.EscapeDataString(provider)}&city={Uri.EscapeDataString(location)}";
        return await _httpClient.GetFromJsonAsync<IEnumerable<EventDto>>(url) ?? Enumerable.Empty<EventDto>();
    }
}

关键说明

Blazor WASM本质是前端应用,所有涉及数据库、文件系统等底层资源的操作必须通过后端服务(你的Api层)完成,浏览器环境不允许直接访问这些资源。保持前后端职责分离,既符合安全规范,也能避免这类平台兼容性问题。

内容的提问来源于stack exchange,提问作者Haris Tirić

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:35:38