更新到.net 4.0后wcf回调异常

2024-01-12

我有一个 wcf 服务,它使用 DualHttpBindings 的回调。该服务在找到搜索结果时将其数据表推送回客户端(对于长时间运行的搜索)。

这在 .Net 3.5 中运行良好。自从我更新到 .Net 4.0 后,它就抛出了 System.Runtime.FatalException,实际上杀死了 IIS 工作进程。我不知道如何开始解决这个问题。任何建议表示赞赏。

生成的事件日志中的信息粘贴在下面:


发生未处理的异常并且 该进程被终止。

应用程序 ID:/LM/W3SVC/2/ROOT/CP

进程ID:5284

> 例外: 系统运行时致命异常

> 消息:对象引用未设置为 对象的实例。

堆栈跟踪: 在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& 远程过程调用)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& 远程过程调用)在 System.ServiceModel.Dispatcher.MessageRpc.Process(布尔值 isOperationContextSet)位于 System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContext 请求,布尔清洁线程, 操作上下文 当前操作上下文)位于 System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext 请求、操作上下文 当前操作上下文)位于 System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult 结果)在 System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult 结果)在 System.Runtime.AsyncResult.Complete(布尔值 同步完成)于 系统.运行时.输入队列1.AsyncQueueReader.Set(Item item) at System.Runtime.InputQueue1.调度() 在 System.ServiceModel.Channels.ReliableDuplexSessionChannel.ProcessDuplexMessage(WsrmMessageInfo 信息)在 System.ServiceModel.Channels.ReliableDuplexSessionChannel.HandleReceiveComplete(IAsyncResult 结果)在 System.ServiceModel.Channels.ReliableDuplexSessionChannel.OnReceiveCompletedStatic(IAsyncResult 结果)在 System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult 结果)在 System.Runtime.AsyncResult.Complete(布尔值 同步完成)于 System.ServiceModel.Channels.ReliableChannelBinder1.InputAsyncResult1.OnInputComplete(IAsyncResult 结果)在 System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult 结果)在 System.Runtime.AsyncResult.Complete(布尔值 同步完成)于 系统.运行时.输入队列1.AsyncQueueReader.Set(Item item) at System.Runtime.InputQueue1.调度() 在 System.Runtime.IOThreadScheduler.ScheduledOverlapped.IOCallback(UInt32 错误代码,UInt32 numBytes, NativeOverlapped* nativeOverlapped)
在 System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32 错误,UInt32 字节读取, NativeOverlapped* nativeOverlapped)
在 System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 错误代码,UInt32 numBytes, NativeOverlapped* pOVERLAP)

> 内部异常: > 系统.NullReferenceException

Message:对象引用未设置为 对象的实例。

堆栈跟踪: 在 System.Web.HttpApplication.ThreadContext.Enter(布尔值 setImpersonationContext)位于 System.Web.HttpApplication.OnThreadEnterPrivate(布尔值 setImpersonationContext)位于 System.Web.AspNetSynchronizationContext.CallCallback可能UnderLock(SendOrPostCallback 回调,对象状态)位于 System.Web.AspNetSynchronizationContext.CallCallback(SendOrPostCallback 回调,对象状态)位于System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& 远程过程调用)


好的 - 我找到了答案。很奇怪,但只需将以下属性放在 WCF 回调包装类上:

[CallbackBehavior(UseSynchronizationContext=false)]

感谢 Caaldwell.net 的回答:http://www.cauldwell.net/patrick/blog/CategoryView,类别,CodeGen.aspx http://www.cauldwell.net/patrick/blog/CategoryView,category,CodeGen.aspx

来自 cauldwell.net:

事实证明,问题在于 ASP.NET 使用(默认)一点 东西叫做 同步上下文。和我一样近 可以告诉(我没有研究过这个 彻底地,说实话)其中之一 工作以确保任何 回调在 UI 线程上运行, 从而无需调用 Control.Invoke 就像你在 WinForms。就我而言,额外的 锁给了一些适合的东西,而且它 正在尝试清理a上的东西 不再存在的线程, 因此出现 NullReferenceException。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新到.net 4.0后wcf回调异常 的相关文章

随机推荐

  • 如何更快、更智能地突出显示单词/术语?

    我有一些文字 p class drag Hello world Attack on Titan season two p 目前 如果用户想要用光标突出显示单词 术语 他们将逐个字母地单击并拖动 我希望这个过程能够更快一些 例如 如果用户开始
  • cron 作业不会写入文件

    我运行 Windows 2003 服务器并尝试每 15 分钟运行一次这样的代码 require db connect php conn db connect list online brukere flytt funksjon til se
  • 角度 js 工厂内的访问范围

    我正在使用离子框架 并且需要能够从代码中的多个位置调用弹出窗口 因此我想将其移至工厂中 弹出窗口使用输入字段 我想获取它的值 通常我会打电话 scope parentGate answer但因为它在工厂里 所以我无法访问范围 有什么想法如何
  • 使用 servlet 在 Java 中上传文件

    我正在使用 javazoom 进行上传 protected void processRequest HttpServletRequest request HttpServletResponse response throws Servlet
  • 拒绝可排序列表中无效的可排序项目

    我尝试了很多方法但没有成功 我有两个相互连接的可排序列表 问题是列表 A 可以接受其中的任何列表项 但是列表 B 只能接受具有 class abc 的项目 代码如下 ul li item A1 li li item A2 li li cla
  • mysql-connector不会导入到pycharm中的脚本中

    我已经使用 pip 成功安装了 mysql connector Installing collected packages mysql connector Running setup py install for mysql connect
  • 模块重新加载的 isinstance 行为

    给定以下两个 py 文件 aclass py class A object pass main py def importer klass Used to import classes from there python qalname i
  • 我可以从 bash 中的定界文档中读取行吗?

    这就是我正在尝试的 我想要的是最后一个echo循环说 一二三四测试1 它不起作用 read line即将空空如也 这里有什么微妙的地方吗 或者这根本行不通 array one two three echo array one two thr
  • Python:将utf-8字符串转换为字节字符串[重复]

    这个问题在这里已经有答案了 我有以下函数从字节序列中解析 utf 8 字符串 注意 length size 是表示 utf 8 字符串长度所需的字节数 def parse utf8 self bytes length size length
  • 如何在解析查询中包含超时?

    我的问题是关于 Android 的 parse com 查询 以及如果查询响应时间过长如何设置超时 例如 我有一个查询 我从 parse com 获取字符串列表 如果从 parse com 接收此查询需要很长时间 例如十秒 我希望用户能够取
  • int 的大小是否取决于编译器和/或处理器?

    整数的大小取决于编译器 操作系统和处理器吗 这个问题的答案取决于我们愿意脱离实际考虑的程度 最终 理论上 C 和 C 中的一切都取决于编译器 并且仅取决于编译器 硬件 操作系统根本不重要 编译器可以自由地实现硬件抽象层any厚度并模仿任何东
  • OpenERP/Odoo 上 _sql_constraints 和 _constraints 之间的区别?

    我注意到 Odoo ERP 有两种限制 但我想知道 sql constraints 与 constraints 之间有什么区别 sql constraints email uniq unique email Please enter Uni
  • Xslt 1.0 - 查找最后一次出现并获取之前的字符串

    我的问题类似于查找最后一次出现的情况 https stackoverflow com questions 3141847 xslt finding last occurance in a string 但是 我需要在最后一次出现分隔符之前输
  • 在 Linux SUSE 或 RedHat 上,如何加载 Python 2.7

    有人可以提供在 SUSE 和 RedHat 上安装 python 2 7 版本所需的步骤吗 那里的版本类似于 2 4 我需要至少 2 6 才能使我的脚本工作 因此 安装后 我可以在 xTerm 中输入 Python 并获得 Python 2
  • Java Bean 条件验证

    我有一个具有两个属性的类 我想使用 Java Bean 验证 但遇到一个问题 如何处理 class ProductRequest private String quantityType private double quantityValu
  • 在java中将双精度数分成两部分“整数和分数”的最佳方法是什么

    我尝试通过以下方法分离5 6 例如 private static double method double d int integerPart 0 double fractionPart 0 0 integerPart int d frac
  • 无法使用 ProcessStartInfo 参数将“”传递到 powershell,C#

    我无法将包含以下内容的参数传递给 powershell 当我使用等效代码但将应用程序更改为 cmd 时 都能够通过 我希望 powershell 执行的参数是 Copy Item Path Working Directory W11F as
  • 当业务逻辑和数据层似乎重叠时,分解它们的最佳设计是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在构建一个 MVC Web 应用程序 使用 Spring MVC 框架 并且我对设计特定区域的最佳方法有点困惑 应用程序必须与一系列 Web
  • 具有一个片段的多布局视图页面

    我必须明确的是 我正在寻找一个示例或答案 我可以在视图页面中使用各种不同的布局设计 并且所有页面中的数据都是动态的 并且所有页面都可以由用户交互 我的用例和当前解决问题的方法 所以我有 8 种不同类型的问题类型 所以我创建了layouts对
  • 更新到.net 4.0后wcf回调异常

    我有一个 wcf 服务 它使用 DualHttpBindings 的回调 该服务在找到搜索结果时将其数据表推送回客户端 对于长时间运行的搜索 这在 Net 3 5 中运行良好 自从我更新到 Net 4 0 后 它就抛出了 System Ru