Невозможно установить соединение, потому что целевая машина активно отказалась от нее в WCF - PullRequest
0 голосов
/ 09 июля 2009

Я создал библиотеку классов под названием 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();

этот метод загружает исполняемую сборку в текущий домен приложения. У меня есть другой метод под названием 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);

Этот метод читает файл app.config и находит тип службы wcf. У меня есть еще один класс ServiceHoster, в котором у меня есть метод HostService:

public static void HostService(Type serviceType)
        {

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

        }

Теперь у меня есть другой проект под названием MyWCFService, и я добавляю ссылку AddServiceLibrary в этот проект и вызываю метод;

AddServiceLibrary.LoadLibrary lb = new AddServiceLibrary.LoadLibrary();
            lb.AssemblyLoader();

В данный момент я надеюсь, что мой сервис размещен должным образом, но когда я хочу добавить ссылку AddServiceReference в мой клиентский проект, он сообщает мне, что Соединение не может быть установлено, потому что целевой компьютер активно отказывался от него в Хотя, если я не использую свою AddServiceLibrary, она находит сервис и работает нормально. Пожалуйста, посмотрите на это и предложите мне, что может быть не так в моем подходе.

1 Ответ

5 голосов
/ 09 июля 2009

Вы удаляете экземпляр ServiceHost, как только открываете его. Снимите блок использования и обработайте удаление этого хоста отдельно.

Ваше решение о наличии статического ServiceHoster, возможно, является проблемой здесь. Независимо от того, где размещается служба путем создания экземпляра ServiceHost, необходимо управлять временем жизни этого экземпляра и его удалением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...