У нас была похожая ситуация, и мы решили зарегистрировать канал только тогда, когда это необходимо, а затем отменить его регистрацию сразу после того, как мы закончили с ним, аналогично отключенной модели ADO.NET, где вы подключаетесь, получаете данные, а затем отключаете .
Согласно документации :
- Каналы регистрируются для каждого домена приложения. Один
Процесс может содержать несколько доменов приложений. Когда процесс заканчивается,
все зарегистрированные им каналы автоматически уничтожаются.
- Channel
имена должны быть уникальными в домене приложения. Например,
потому что каналы по умолчанию имеют имена, чтобы зарегистрировать два HttpChannel
объекты в одном домене приложения, вы должны изменить имена
каналы, прежде чем регистрировать их. Следующий пример кода C #
демонстрирует это.
IDictionary prop = new Hashtable();
prop["name"] = "http1";
prop["port"] = "9001";
ChannelServices.RegisterChannel(new HttpChannel(prop, null, null));
- Вы не можете зарегистрировать канал, который прослушивает определенный порт.
чем один раз. Хотя каналы зарегистрированы на
для каждого домена приложения, разные домены приложений на
Одна и та же машина не может зарегистрировать один и тот же канал, прослушивая один и тот же
порт.
- Если вы не уверены, доступен ли порт, используйте 0
(ноль) при настройке порта вашего канала и удаленной системы
выберет доступный порт для вас.
- Клиенты могут общаться с
удаленный объект с использованием любого зарегистрированного канала. Система дистанционного управления
гарантирует, что удаленный объект подключен к правому каналу, когда
клиент пытается подключиться к объекту. Клиент несет ответственность
для вызова ChannelServices.RegisterChannel перед попыткой
общаться с удаленным объектом. Если он ожидает функцию обратного вызова,
клиент должен зарегистрировать канал и порт.
Таким образом, имя канала должно быть уникальным в вашем домене приложений, и по замыслу только один канал http может иметь один порт за раз. Вы не можете иметь два разных канала на одном и том же порту.