Pergunta

Minhas chamadas de aplicativo RemotingConfiguration.Configure() Para configurar o .NET REMOT. Mas como preciso do atributo PortName do elemento dos canais para ser diferente cada vez que o aplicativo é executado, tenho que configurar essa configuração específica programaticamente.

Parece muito simples (e provavelmente é - mas eu tenho pesquisado o Google o dia todo por uma resposta).

Até agora eu tenho:

RemotingConfiguration.Configure(Program.ConfigFilePath, false);

IChannel[] regChans = ChannelServices.RegisteredChannels;
IpcChannel ipcChannel = (IpcChannel)ChannelServices.GetChannel(regChans[0].ChannelName);

O depurador me mostra que ipcChannel._serverChannel._prop seria a tabela de hash à qual eu preciso adicionar uma entrada como ["portName"] = uniquePortName, mas simplesmente não consigo ver como acessar e modificar isso.

Eu sei que sempre poderia descartar o arquivo *.config e fazer tudo de forma programaticamente, mas eu verdade Não quero jogar fora os benefícios de ter a maioria das configurações facilmente editáveis.

É tarde demais para modificar um IpcClientChannel objeto uma vez RemotingConfiguration.Configure() Voltou? Obviamente eu provavelmente poderia escrever minha própria versão de RemotingConfiguration.Configure(), mas isso também não parece a maneira certa de fazer as coisas.

Foi útil?

Solução

Acho que estabelecei que o que eu queria fazer não é possível.

Você pode qualquer usar RemotingConfiguration.Configure() ou algo como:

  IDictionary channelProperties = new Hashtable();
  channelProperties.Add("authorizedGroup", "Everyone");
  channelProperties.Add("portName", "Client-" + Guid.NewGuid().ToString()); // Unique port name
  IpcChannel channel = new IpcChannel(channelProperties, null, null);
  ChannelServices.RegisterChannel(channel);

Você não pode misturar e combinar. Pelo menos, esse parece ser o caso.

(É claro que você ainda pode ler qualquer uma dessas configurações do arquivo *.config, mas o ponto é que você precisa codificar explicitamente para todas as opções que pode querer oferecer suporte.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top