无法建立连接,因为目标计算机在WCF中主动拒绝它

Emb*_*rja 0 wcf

我创建了一个名为AddServiceLibrary的类库,其中我有一个名为AssemblyLoader的方法,代码如下:

string executingAssemblyName =  Application.ExecutablePath;
        AssemblyName asmName = AssemblyName.GetAssemblyName(executingAssemblyName);
        AppDomain appDomain = AppDomain.CurrentDomain;
        Assembly assembly = appDomain.Load(asmName);
        _assemblyTypes = assembly.GetTypes().ToList();            
        LoadAppConfig();
Run Code Online (Sandbox Code Playgroud)

此方法在当前appdomain中加载执行程序集.我有另一种叫做LoadAppConfig()的方法

ServicesSection  serviceSection = ConfigurationManager.GetSection("system.serviceModel/services") as ServicesSection;

            ServiceElementCollection sereleColl = serviceSection.Services;


            string endPointAddress = string.Empty ;
            foreach (var ele in sereleColl)
            {
               _serviceType = GetServiceType((System.ServiceModel.Configuration.ServiceElement)(ele)).Name);

               break;

            }

            ServiceHoster.HostService(_serviceType);
Run Code Online (Sandbox Code Playgroud)

此方法读取app.config文件并查找wcf服务的类型.我有一个类ServiceHoster我有一个方法HostService:

public static void HostService(Type serviceType)
        {

            using (ServiceHost host = new ServiceHost(serviceType))
            {
                host.Open();
            }

        }
Run Code Online (Sandbox Code Playgroud)

现在,我有一个名为MyWCFService的不同项目,我在这个项目中添加AddServiceLibrary的引用并调用该方法;

AddServiceLibrary.LoadLibrary lb = new AddServiceLibrary.LoadLibrary();
            lb.AssemblyLoader();
Run Code Online (Sandbox Code Playgroud)

我希望在这一点上我的服务是正确托管的,但是当我想在我的客户端项目中使用AddServiceReference时,它告诉我,由于目标机器主动拒绝它,因此 无法建立连接. 如果我不使用我的AddServiceLibrary,那么它是找到服务并且工作正常.请任何人看看它,并建议我的方法可能是错的.

Dav*_*d M 5

打开它时,您正在处置ServiceHost实例.取下使用块,分别处理该主机.

您的设计决定使用静态ServiceHoster可能是一个问题.无论通过实例化ServiceHost实例来托管服务,都需要管理此实例的生命及其处置.