My company has an existing .Net Remoting service exposing interfaces to external processes. I am configuring this service to support both IP v4 and IP v6 communications by having the following app.config section:
<system.runtime.remoting>
<application>
<service>
<wellknown mode="Singleton" type="type,
dll"objectUri="exposedname.rem" />
</service>
<channels>
<channel name="tcpclient" ref="tcp" encryption="EncryptAndSign">
<clientProviders>
<formatter ref="binary" />
</clientProviders>
</channel>
<channel ref="tcp" name="tcp6" port="9000" bindTo="[::]"
encryption="EncryptAndSign">
<clientProviders>
<formatter ref="binary" />
</clientProviders>
</channel>
<channel ref="tcp" name="tcp4" port="9000" bindTo="0.0.0.0"
encryption="EncryptAndSign">
<clientProviders>
<formatter ref="binary" />
</clientProviders>
</channel>
</channels>
</application>
<customErrors mode="off"/>
</system.runtime.remoting>
The above config file section gets the remoting service responding to non-stream functions on both ip v4 and ip v6. Any time a function tries to send or receive a stream, however, the following ArgumentException is thrown:
IPv4 address 0.0.0.0 and IPv6 address ::0 are unspecified addresses that
cannot be used as a target address.
Parameter name: hostNameOrAddress
Is there a way to modify the app.config so that the service will return a stream mapped to a real ip and still support ip v4 and ip v6? Is this not possible in .net remoting?