Blazor Server添加WCF NetTcp监听端口未生效及调用报错问题咨询
解决Blazor Server中CoreWCF NetTcp端口未监听的问题
问题根源
你的代码存在几个关键问题:
- 缺少CoreWCF NetTcp传输的依赖组件,导致NetTcp绑定无法正常生效
- 错误尝试手动调用
serviceBuilder.OpenAsync()——CoreWCF会随Blazor Server主机自动启动,手动调用会打破配置生命周期,触发状态错误 - 代码存在拼写错误:
AddServerSizeBlazor应为AddServerSideBlazor(虽不影响WCF功能,但建议修正)
修复步骤
- 安装CoreWCF.NetTcp依赖包
NetTcp绑定需要单独的NuGet包支持,在项目中执行以下命令安装:
dotnet add package CoreWCF.NetTcp
或通过NuGet包管理器搜索安装CoreWCF.NetTcp。
- 修正Program.cs配置
无需手动调用OpenAsync(),CoreWCF会由ASP.NET Core主机自动托管启动。修正后的完整代码如下:
var builder = WebApplication.CreateBuilder(args); // 修正拼写错误 builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); builder.Services.AddSingleton<WeatherForecastService>(); // 注册CoreWCF服务及契约实现 builder.Services.AddServiceModelServices() .AddTransient<IContractExchange, ContractExchange>(); // 添加NetTcp传输支持 builder.Services.AddServiceModelNetTcpBinding(); var app = builder.Build(); // 配置CoreWCF端点 app.UseServiceModel(serviceBuilder => { serviceBuilder.AddService<ContractExchange>(serviceOptions => { serviceOptions.DebugBehavior.IncludeExceptionDetailInFaults = true; }); serviceBuilder.AddServiceEndpoint<ContractExchange, IContractExchange>( new NetTcpBinding(), "net.tcp://127.0.0.1:21701/Endpoint" ); }); // Blazor常规中间件配置 if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.MapBlazorHub(); app.MapFallbackToPage("/_Host"); app.Run();
验证端口监听
启动应用后,用以下命令检查端口是否正常监听:
- PowerShell命令:
Get-NetTCPConnection -LocalPort 21701
- CMD命令:
netstat -an | findstr 21701
关键说明
- CoreWCF的服务生命周期完全由ASP.NET Core主机管理,无需手动控制启动/关闭
- 必须通过
AddServiceModelNetTcpBinding()注册NetTcp传输的底层服务 - 确保你的
IContractExchange契约已正确标记[ServiceContract]特性,操作方法标记[OperationContract]特性
内容的提问来源于stack exchange,提问作者Marcin
相关产品推荐
相关产品推荐

