我有一个.NET应用程序,它在管理控制台和服务器应用程序之间使用远程处理。
在运行时间特别长的远程调用期间,我将收到一条错误消息,如下所示。
我已将发起人添加到客户端以防止关闭远程连接,并且我已验证正在调用Renew()方法。
我已经搜索了错误,但没有太多提示。我不太确定这是什么问题,因此可以提供任何帮助。
值不能为空。
参数名称:returnHeaders
说明:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。
异常详细信息:System.ArgumentNullException:值不能为null。
参数名称:returnHeaders
源错误:
当前Web请求的执行期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来标识有关异常的来源和位置的信息。
堆栈跟踪:
[ArgumentNullException:值不能为null。
参数名称:returnHeaders]
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)+7596735
最佳答案
好了,看看syncfusion.com上的Shared Source,并检查SecurityPermissions属性here,我可以猜到BinaryFormatter(您没有说哪个?)未能对有问题的对象进行反序列化。
既然您提到这是一个特别长的调用,那么将远程调用包装在try
/ catch
块中并封装完整的堆栈以查看确切的失败位置可能是值得的……甚至更好,如果InnerException不为null,则包括该内容。...或执行类似的操作...好吧,这听起来可能有点黑...可能会失败...
在服务器端,创建一个虚拟方法...例如
无效FuBar(void){
int foo = 3,bar = 4,baz = 0;
baz = foo + bar;
}
当您调用长时间运行的过程时,请在后台生成一个线程以重复调用FuBar
方法以确保远程服务器不会过期,并且当调用结束时,请杀死该线程...
我的猜测是,经过一段时间后,尽管续签了赞助商,但远程通话还是失败了...
还是套接字超时?我没主意...
希望这可以帮助,
最好的祝福,
汤姆