Chi ha provato a utilizzare .NET Remoting per risolvere problemi di Interprocess Communication, se sarà trovato nella ovvia necessità di impedire l'accesso alle porte esposte da computer diversi da localhost. In questo breve spezzone di codice viene impostata la proprietà rejectRemoteRequests che ha proprio questo scopo. La stessa proprietà la si può settare anche da file di configurazione, ma nel caso dell'IPC, io ho preferito farlo da codice.

/// <summary>
///
Run a remoting server
///
</summary>
private static void
StartRemoting()
{
    // Accettiamo connessioni solo dal pc locale 127.0.0.1
    IDictionary props = new
Hashtable();
    props["rejectRemoteRequests"] = true
;
    props["port"] = AppSettings.Current.RemotingPort;

    TcpChannel channel = new TcpChannel( props, null,new
BinaryServerFormatterSinkProvider() );

    ChannelServices.RegisterChannel( channel );

    RemotingConfiguration.RegisterWellKnownServiceType(
        typeof
( Elite.IMHO.Data.RemoteReference ),
        "RemoteReference.rem",
        WellKnownObjectMode.SingleCall );
}

Cercando un po' in rete ho trovato anche come .NET 2.0 permetterà di gestire l'IPC, con un channel ad-hoc denominato appunto "ipc"

IPC with Remoting in .NET 2.0

Powered by