Настроить сервер COM+

Сервер COM+ уже запущен. Я вижу это в сервисах.

Теперь я хочу установить/настроить новую версию этого компонента. Итак, я прекращаю службу. Скопируйте новую com+ dll и файл exe в это место. Запускаю службу и получаю следующую ошибку.

Remoting configuration failed with the exception 'System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted
   at System.Runtime.Remoting.Channels.Http.HttpServerChannel.StartListening(Object data)
   at System.Runtime.Remoting.Channels.Http.HttpServerChannel.SetupChannel()
   at System.Runtime.Remoting.Channels.Http.HttpServerChannel..ctor(IDictionary properties, IServerChannelSinkProvider sinkProvider)
   at System.Runtime.Remoting.Channels.Http.HttpChannel..ctor(IDictionary properties, IClientChannelSinkProvider clientSinkProvider, IServerChannelSinkProvider serverSinkProvider)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle._InvokeConstructor(Object[] args, SignatureStruct& signature, IntPtr declaringType)
   at System.RuntimeMethodHandle.InvokeConstructor(Object[] args, SignatureStruct signature, RuntimeTypeHandle declaringType)
   at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
   at System.Runtime.Remoting.RemotingConfigHandler.CreateChannelFromConfigEntry(ChannelEntry entry)
   at System.Runtime.Remoting.RemotingConfigHandler.ConfigureChannels(RemotingXmlConfigFileData configData, Boolean ensureSecurity)
   at System.Runtime.Remoting.RemotingConfigHandler.ConfigureRemoting(RemotingXmlConfigFileData configData, Boolean ensureSecurity)'.

Я получаю ту же ошибку, когда запускаю ее в Visual Studio из консольного приложения, которое установлено как служба и использует сервер COM+.

Еще один момент, который следует отметить, заключается в том, что консольное приложение не работает с оператором RemoteConfiguration.Configure. В качестве теста я сделал отдельное консольное приложение для прямого вызова COM-компонента с использованием ключевого слова «new», которое отлично работает.

Что мне здесь не хватает?


person peacefulmember    schedule 06.09.2012    source источник
comment
Является ли COM+ единственным вариантом? Можете ли вы вместо этого использовать общую .dll или веб-службу?   -  person jrummell    schedule 06.09.2012
comment
@jrummell - я должен придерживаться COM+, так как он уже работает. Мне просто нужно установить новую обновленную версию.   -  person peacefulmember    schedule 06.09.2012
comment
Не уверен, что это как-то связано с COM+. Ошибка указывает на то, что у вас уже есть пара IP/порт, используемая каналом удаленного взаимодействия. Это выполняется более одного раза или конфигурация плохая (используется порт, который вы не использовали)?   -  person tcarvin    schedule 06.09.2012
comment
Увеличилась ли версия AssemblyVersion библиотеки DLL службы com+ с новой версией службы? Вы найдете это в файле AssemblyInfo.cs вашего проекта.   -  person GTG    schedule 06.09.2012


Ответы (1)


Я думаю, вам нужно импортировать компонент в службы COM, используя параметры в службах компонентов на панели управления. Если вы просто скопируете новые объекты поверх старых, новый компонент не будет зарегистрирован.

person Rikalous    schedule 06.09.2012
comment
Можете ли вы привести пример того, как его зарегистрировать? У меня есть клиентское приложение, зарегистрированное в службах компонентов, и у меня сложилось впечатление, что в службах компонентов необходимо зарегистрировать только прокси. - person peacefulmember; 06.09.2012