【发布时间】:2014-07-13 02:56:25
【问题描述】:
我有一个使用实体框架从 SQL 服务器检索数据的服务。大多数时候它工作正常,但有时它会失败并显示
请求的服务 XXXXXXXXXXXXXXXXXXX 可能是 已激活。”错误。要能够看到 怎么了,我启用了追踪 并使用 svctraceviewer 检查。和 发现有一个 显示的 nullreference 异常 ...以下是错误的详细信息 我看到了……
异常类型: System.ServiceModel.ServiceActivationException, System.ServiceModel,版本=3.0.0.0, 文化=中性, PublicKeyToken=b77a5c561934e089
消息:服务 '/bookadventurewcf/CommonService.svc' 无法激活,因为 编译时出现异常。这 异常消息是:对象引用 未设置为对象的实例..
堆栈跟踪: System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(字符串 标准化虚拟路径) System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(字符串 相对虚拟路径) System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest() System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest() System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequest(对象 状态) System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.WorkItem.Invoke2()
等等
因此它在 EnsureServiceAvailable 失败,对象引用未设置为对象的实例。
我无法弄清楚导致错误的原因。
【问题讨论】:
-
很明显,您的服务代码中肯定有某些内容可能会失败。你有登录自己的代码吗?如果没有:您需要添加它。您确定在使用它们之前检查所有引用对象的 != null 吗?如果没有:这样做!另外:您可以在整个服务周围放置一个大的
try {......} catch()并捕获并记录该异常吗?这对你有帮助吗?? -
marc_s,感谢您的回复.. 。 正确的?但是我会尝试记录并查看...已经有一个 try..catch 在围绕整个服务的代码中。
-
我也有同样的问题。似乎应用程序池第一次启动时,它会在第一次请求时得到它,但随后就消失了。我的优先级较低,但我的事件日志让我很恼火。 Stack 为我显示了 Microsoft 代码中的问题。
-
WebHost 处理请求失败。发件人信息:System.ServiceModel.ServiceHostingEnvironment+HostingManager/32972148 异常:System.ServiceModel.ServiceActivationException:由于编译期间出现异常,无法激活服务“/SomeService.svc”。异常消息是:对象引用未设置为对象的实例。---> System.NullReferenceException:对象引用未设置为对象的实例。在 System.Web.Compilation.DiskBuildResultCache.CacheBuildResult(
标签: wcf