在學習Remoting技術時遇到一個問題:不允許類型 System.DelegateSerializationHolder 和從中派生的類型(例如 System.DelegateSerializationHolder)在此安全層級上被還原序列化。後來經過多方面尋找資料原來是在.NET Framework 1.1中安全層級預設是Low的,所以不能被還原序列化。以下代碼是是一個聊天程式(一個樣本程式來自《MCAD/MCSD制勝寶典——用Visul Basic.NET和Visual C#.NET開發XML Web服務與伺服器組件(考試70-310和70-320)》一書),在分別修改了用戶端與伺服器端設定檔後,用RemotingConfiguration.Configure讀取設定檔並配置遠端結構就可以訪問了。
伺服器端設定檔:Central.config
<configuration>
<system.runtime.remoting>
<application>
<service>
<wellknown mode="Singleton" type="ChatCoordinator, ChatCoordinator" objectUri="Chat" />
</service>
<channels>
<channel ref="http" port="8080">
<!--
以下部分是控制按層級的
Full: .NET 遠端的完全還原序列化層級。它在所有情況下都支援遠端所支援的全部類型。
Low: .NET 遠端的低還原序列化層級。它支援與基本的遠端功能相關聯的類型。
-->
<serverProviders>
<provider ref="wsdl" />
<formatter ref="soap" typeFilterLevel="Full" />
<formatter ref="binary" typeFilterLevel="Full" />
</serverProviders>
</channel>
</channels>
</application>
</system.runtime.remoting>
</configuration>
用戶端設定檔:Client.config
<configuration>
<system.runtime.remoting>
<application>
<client>
<wellknown type="ChatCoordinator, ChatCoordinator" url="http://localhost:8080/Chat" />
</client>
<channels>
<channel ref="http" port="0">
<!--以下部分是控制按層級的-->
<serverProviders>
<provider ref="wsdl" />
<formatter ref="soap" typeFilterLevel="Full" />
<formatter ref="binary" typeFilterLevel="Full" />
</serverProviders>
</channel>
</channels>
</application>
</system.runtime.remoting>
</configuration>
代碼就不贅述了,自己下載看吧!