在使用C#的Remoting技術開發軟件的時候,如果服務端與客戶端都在同一台電腦上,客戶端能夠成功獲取服務端的錯誤。
但如果服務端與客戶端在二台電腦上的時候,通常客戶端獲取服務端內部錯誤的時候,只是提示:服務器遇到內部錯誤 請打開服務器的 .config 文件中的 customErrors。
這樣籠統的錯誤提示,對於客戶端調試分析錯誤原因,顯然沒有什麼幫助。為了獲取服務端的錯誤原因,按以下代碼即可解決這問題,代碼是對服務端的程序進行修改。
1、在服務器端通過配置文件實現服務注冊時,
例:RemotingConfiguration.Configure(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
則在配置文件中<system.runtime.remoting>下加入<customErrors mode="off" />即可實現。
示例:
- <?xml version="1.0" encoding="utf-8"?>
- <configuration>
- <system.runtime.remoting>
- <customErrors mode="off" />
- </system.runtime.remoting>
- </configuration>
2、當在服務器端通過代碼實現服務注冊時,即類似
- RemotingConfiguration.RegisterWellKnownServiceType
- (
- typeof(RemotingAdminObject),
- "RemotingAdmin",
- WellKnownObjectMode.Singleton
- );
時,則要通過以下的代碼實現:
- //遠程拋出錯誤
- RemotingConfiguration.CustomErrorsMode = CustomErrorsModes.Off;
- RemotingConfiguration.CustomErrorsEnabled(false);
這樣就可以在客戶端顯示服務端的錯誤原因。