我们遇到了一个非常奇怪的问题:我们正在为 IIS 6.1 中托管的 silverlight 5 应用程序使用实体框架 4 和 ria 服务。在很长一段时间内,一切都运行顺利,但有时应用程序会失败,并在事件日志中显示以下错误消息:
WebHost 未能处理请求。
发件人信息:System.ServiceModel.Activation.HostedHttpRequestAsyncResult/56703158
异常:System.ServiceModel.ServiceActivationException:由于编译期间出现异常,无法激活服务“/Services/EcoFleet-DomainServices-Repository-EcofleetRepository.svc”。
异常消息是:DomainService 'EcofleetRepository' 中的实体 'DeviceData' 没有定义键。DomainService 操作公开的实体类型必须至少具有一个标有 KeyAttribute 的公共属性。---> System.InvalidOperationException:DomainService 'EcofleetRepository' 中的实体 'DeviceData' 没有定义键。DomainService 操作公开的实体类型必须至少具有一个标有 KeyAttribute 的公共属性。
在 System.ServiceModel.DomainServices.Server.DomainServiceDescription.ValidateEntityTypes()
在 System.ServiceModel.DomainServices.Server.DomainServiceDescription.Initialize()
在 System.ServiceModel.DomainServices.Server.DomainServiceDescription。
在 System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey key, Func
2 valueFactory)
在 System.ServiceModel.DomainServices.Server.DomainServiceDescription.GetDescription(Type domainServiceType)
在 System.ServiceModel.DomainServices.Hosting.DomainServiceHost..ctor(Type domainServiceType, Uri[] baseAddresses)
在System.ServiceModel.DomainServices.Hosting.DomainServiceHostFactory.CreateServiceHost(Type serviceType, Uri[] baseAddresses)
在 System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses)
在 System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService( String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
在 System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(ServiceActivationInfo serviceActivationInfo, EventTraceActivity eventTraceActivity)
在 System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
--- 内部异常堆栈跟踪结束 ---
在 System.Runtime .AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) 进程名称:w3wp
进程 ID:2300
应用程序仍然响应,但不能从服务器加载任何实体。停止并启动站点后,一切都恢复正常。
这种情况下的实体(DeviceData)是一个数据库表,它确实有一个键,不管哪个实体失败似乎是随机的。此外,我只希望在编译时看到“未定义键”错误。有谁知道问题是什么,以及如何解决?