通过 Remoting 访问远程服务端出问题(请各位高手指教)

zyl258 2006-09-01 03:43:29
将服务端和客户端在同一台机器上运行,程序没有问题,
把服务端和客户端分别安装在不同电脑上,问题就出现了
客户端无法捕获正确的服务端异常而任何异常信息都变成了“服务器遇到内部错误。有关更多信息,请打开服务器的 .config 文件中的 customErrors”。

请各位高手指教!!!谢谢
...全文
250 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl258 2006-09-01
  • 打赏
  • 举报
回复
我的通道注册程序

BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider();
serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider();
IDictionary props = new Hashtable();
props["port"] = 9937;

RemotingConfiguration.RegisterWellKnownServiceType(typeof(ExamService), "MyUri", WellKnownObjectMode.SingleCall);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(ExamServiceEvent), "MyUriEvent", WellKnownObjectMode.Singleton);
TcpChannel myChannel = new TcpChannel(props, clientProv, serverProv);

//HttpChannel myChannel=new HttpChannel(props, clientProv, serverProv);
ChannelServices.RegisterChannel(myChannel);
zyl258 2006-09-01
  • 打赏
  • 举报
回复
帮忙看看,谢谢!!!
zyl258 2006-09-01
  • 打赏
  • 举报
回复
小刀可乐,照你那样修改后程序提示
有关调用实时(JIT)调试而不是此对话框的详细信息,
请参阅此消息的结尾。

************** 异常文本 **************
System.Runtime.Serialization.SerializationException: 反序列化对象的状态不足。需要详细信息。

Server stack trace:
at System.DelegateSerializationHolder.GetDelegate(DelegateEntry de)
at System.DelegateSerializationHolder.GetRealObject(StreamingContext context)
at System.Runtime.Serialization.ObjectManager.ResolveObjectReference(ObjectHolder holder)
at System.Runtime.Serialization.ObjectManager.DoFixups()
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, IMethodCallMessage methodCallMessage)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, IMethodCallMessage methodCallMessage)
at System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryRequestMessage(String objectUri, Stream inputStream, Boolean bStrictBinding, TypeFilterLevel securityLevel)
at System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)

Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at Exam.Server.Event.ExamServiceEvent.add_InitializationExam(EventInitializationExam value)
at Exam.Client.Frm.frmConfirm.frmConfirm_Load(Object sender, EventArgs e) in d:\项目\口语考试\code\use.com.examsys\exam.client\frm\frmconfirm.cs:line 506
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.SafeNativeMethods.ShowWindow(HandleRef hWnd, Int32 nCmdShow)
at System.Windows.Forms.Control.SetVisibleCore(Boolean value)
at System.Windows.Forms.Form.SetVisibleCore(Boolean value)
at System.Windows.Forms.Control.set_Visible(Boolean value)
at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
at System.Windows.Forms.Form.ShowDialog()
at Exam.Client.Frm.frmLogin.frmLogin_Closed(Object sender, EventArgs e) in d:\项目\口语考试\code\use.com.examsys\exam.client\frm\frmlogin.cs:line 374
at System.Windows.Forms.Form.OnClosed(EventArgs e)
at System.Windows.Forms.Form.CheckCloseDialog()


************** 已加载的程序集 **************
mscorlib
程序集版本: 1.0.5000.0
Win32 版本: 1.1.4322.2032
基本代码: file:///c:/winnt/microsoft.net/framework/v1.1.4322/mscorlib.dll
----------------------------------------
Exam.Client
程序集版本: 1.0.2435.29446
Win32 版本: 1.0.2435.29446
基本代码: file:///D:/项目/口语考试/CODE/USE.COM.EXAMSYS/Exam.Client/bin/Debug/Exam.Client.exe
----------------------------------------
System.Windows.Forms
程序集版本: 1.0.5000.0
Win32 版本: 1.1.4322.2032
基本代码: file:///c:/winnt/assembly/gac/system.windows.forms/1.0.5000.0__b77a5c561934e089/system.windows.forms.dll
----------------------------------------
System
程序集版本: 1.0.5000.0
Win32 版本: 1.1.4322.2032
基本代码: file:///c:/winnt/assembly/gac/system/1.0.5000.0__b77a5c561934e089/system.dll
----------------------------------------
log4net
程序集版本: 1.2.9.0
Win32 版本: 1.2.9.0
基本代码: file:///D:/项目/口语考试/CODE/USE.COM.EXAMSYS/Exam.Client/bin/Debug/log4net.DLL
----------------------------------------
System.Xml
程序集版本: 1.0.5000.0
Win32 版本: 1.1.4322.2032
基本代码: file:///c:/winnt/assembly/gac/system.xml/1.0.5000.0__b77a5c561934e089/system.xml.dll
----------------------------------------
System.Drawing
程序集版本: 1.0.5000.0
Win32 版本: 1.1.4322.2032
基本代码: file:///c:/winnt/assembly/gac/system.drawing/1.0.5000.0__b03f5f7f11d50a3a/system.drawing.dll
----------------------------------------
Exam.Server.Common
程序集版本: 1.0.2435.29226
Win32 版本: 1.0.2435.29226
基本代码: file:///D:/项目/口语考试/CODE/USE.COM.EXAMSYS/Exam.Client/bin/Debug/Exam.Server.Common.DLL
----------------------------------------
System.Runtime.Remoting
程序集版本: 1.0.5000.0
Win32 版本: 1.1.4322.2032
基本代码: file:///c:/winnt/assembly/gac/system.runtime.remoting/1.0.5000.0__b77a5c561934e089/system.runtime.remoting.dll
----------------------------------------
Exam.Server.Event
程序集版本: 1.0.2435.29226
Win32 版本: 1.0.2435.29226
基本代码: file:///D:/项目/口语考试/CODE/USE.COM.EXAMSYS/Exam.Client/bin/Debug/Exam.Server.Event.DLL
----------------------------------------
Common
程序集版本: 1.0.2435.29226
Win32 版本: 1.0.2435.29226
基本代码: file:///D:/项目/口语考试/CODE/USE.COM.EXAMSYS/Exam.Client/bin/Debug/Common.DLL
----------------------------------------
mscorlib.resources
程序集版本: 1.0.5000.0
Win32 版本: 1.1.4322.573
基本代码: file:///c:/winnt/assembly/gac/mscorlib.resources/1.0.5000.0_zh-chs_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Windows.Forms.resources
程序集版本: 1.0.5000.0
Win32 版本: 1.1.4322.573
基本代码: file:///c:/winnt/assembly/gac/system.windows.forms.resources/1.0.5000.0_zh-chs_b77a5c561934e089/system.windows.forms.resources.dll
----------------------------------------

************** JIT 调试 **************
计算机的配置文件(machine.config)的
system.windows.forms 节中必须设置 jitDebugging 值。
编译应用程序时还必须启用\r\n调试。\r\n\r\n例如: \r\n\r\n<configuration>\r\n <system.windows.forms jitDebugging="true" />\r\n</configuration>\r\n\r\n启用 JIT 调试后,任何未处理的异常\r\n都将被发送到此计算机上注册的 JIT 调试器,\r\n而不是由此对话框处理。\r\n

zahuifan 2006-09-01
  • 打赏
  • 举报
回复
ding
zyl258 2006-09-01
  • 打赏
  • 举报
回复
我试试
cctaiyang 2006-09-01
  • 打赏
  • 举报
回复
web方式的话在远程服务器的Web.Config文件中的<system.runtime.remoting>配置节中增加配置节点:<customErrors mode="off"/>,就可以实现在客户端获取远程服务器错误
cctaiyang 2006-09-01
  • 打赏
  • 举报
回复
在Server上的.config中配置如下:
<system.runtime.remoting>
<customErrors mode="off"/>
</system.runtime.remoting>
然后在Server注册通道前:
System.Runtime.Remoting.RemotingConfiguration.Configure("server.exe.config");

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧