CoreWCF服务实现对象未初始化问题求助
CoreWCF 错误:The service implementation object was not initialized or is not available
错误详情
The service implementation object was not initialized or is not available.
at CoreWCF.Dispatcher.TaskMethodInvoker.InvokeAsync(Object instance, Object[] inputs)
at CoreWCF.Dispatcher.DispatchOperationRuntime.<>c__DisplayClass71_0.<<InvokeAsync>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at CoreWCF.Dispatcher.DispatchOperationRuntime.InvokeAsync(MessageRpc rpc)
排查与修复步骤
1. 检查服务实现类的构造函数
确保ShipperAsnService的构造函数能正常初始化:
- 若构造函数依赖其他服务(如数据库上下文、第三方客户端),确认这些依赖项已正确注入且可正常实例化
- 避免在构造函数中执行可能失败的操作(如网络请求、文件读写),必要时移至服务方法内处理
2. 验证Startup.cs中的服务注册
确认在Startup配置中已正确注册服务实现类:
// 示例正确注册方式 services.AddServiceModelServices(); services.AddSingleton<IShipperAsnService, ShipperAsnService>(); // 可根据业务需求替换为AddScoped/AddTransient
- 检查是否遗漏服务实现类的注册,或契约与实现的注册不匹配
- 若使用依赖注入,确保所有依赖项都已在容器中完成注册
3. 确认服务契约与实现的匹配性
检查IShipperAsnService(契约)和ShipperAsnService(实现):
- 实现类必须直接实现契约接口,不能通过间接继承完成实现
- 契约中定义的所有方法,实现类必须有对应实现,且签名完全一致(包括返回类型、参数、异步标记)
- 确认接口和实现类上的CoreWCF特性(如
[ServiceContract]、[OperationContract])配置正确,无遗漏或错误
4. 检查服务实例生命周期配置
如果配置服务时指定了实例上下文模式,确认模式与服务实现兼容:
- 例如使用
InstanceContextMode.Single时,确保单例实例可正确初始化且无状态问题 - 避免在
InstanceContextMode.PerCall模式下使用含不可注入依赖的构造函数
5. 排查依赖注入容器问题
若使用自定义DI容器或复杂依赖链:
- 手动调用
serviceProvider.GetService<IShipperAsnService>()测试容器是否能成功解析服务实例 - 确认不存在循环依赖导致实例无法创建
内容的提问来源于stack exchange,提问作者Arvind Yadav
相关产品推荐
相关产品推荐

