.NET Core 3.1中Service_SoapClient无参构造函数报错求助
解决.NET Core 3.1中Service_SoapClient无参构造器缺失问题
问题描述
编译报错:
Service_SoapClient does not contain a constructor that takes 0 arguments
用户代码示例:
public class Program { public static void Main(string[] args) { Service_SoapClient a = new Service_SoapClient(); CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }
解决方案
.NET Core添加服务引用时,默认不会生成无参构造器,需根据场景选择对应构造器重载:
方式1:显式传入绑定与端点地址
直接指定SOAP服务的绑定类型和端点URL实例化客户端:var binding = new BasicHttpBinding(); var endpoint = new EndpointAddress("http://your-service-endpoint-url"); Service_SoapClient client = new Service_SoapClient(binding, endpoint);方式2:使用配置文件中的客户端配置
确保appsettings.json或配置文件已配置服务客户端信息,通过配置名称实例化:// 配置名称对应配置文件中<client>节点的name属性 Service_SoapClient client = new Service_SoapClient("Service_Soap");方式3:依赖注入场景下使用HttpClient重载
在Startup.cs的ConfigureServices中注册客户端,利用HttpClient实例化:public void ConfigureServices(IServiceCollection services) { services.AddHttpClient<Service_SoapClient>((sp, client) => { client.BaseAddress = new Uri("http://your-service-endpoint-url"); }); }后续在需要使用的地方通过构造注入获取客户端实例即可。
内容的提问来源于stack exchange,提问作者kai
相关产品推荐
相关产品推荐

