【发布时间】:2013-07-22 08:33:52
【问题描述】:
我们遇到了一个非常奇怪的问题:我们正在为 IIS 6.1 中托管的 silverlight 5 应用程序使用实体框架 4 和 ria 服务。在很长一段时间内,一切都运行顺利,但有时应用程序会失败并在事件日志中显示以下错误消息:
WebHost 未能处理请求。
发件人信息: System.ServiceModel.Activation.HostedHttpRequestAsyncResult/56703158
异常:System.ServiceModel.ServiceActivationException:服务 '/Services/EcoFleet-DomainServices-Repository-EcofleetRepository.svc' 编译时出现异常,无法激活。
异常消息是:DomainService 中的实体“DeviceData” 'EcofleetRepository' 没有定义键。暴露的实体类型 通过 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.CreateDescription(类型 domainServiceType)
在 System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey key, Func2 valueFactory)
at System.ServiceModel.DomainServices.Server.DomainServiceDescription.GetDescription(类型 domainServiceType)
在 System.ServiceModel.DomainServices.Hosting.DomainServiceHost..ctor(类型 domainServiceType, Uri[] baseAddresses)
在 System.ServiceModel.DomainServices.Hosting.DomainServiceHostFactory.CreateServiceHost(类型 serviceType, Uri[] baseAddresses)
在 System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(字符串 构造函数字符串,Uri[] baseAddresses)
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(字符串 normalizedVirtualPath, EventTraceActivity eventTraceActivity)
at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(ServiceActivationInfo serviceActivationInfo, EventTraceActivity eventTraceActivity)
在 System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(字符串 normalizedVirtualPath, EventTraceActivity eventTraceActivity)
--- 内部异常堆栈跟踪结束 ---
System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult 结果)
在 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult 结果)进程名称:w3wp
进程ID:2300
应用程序仍然响应,但无法从服务器加载任何实体。停止并启动站点后,一切都恢复正常。
本例中的实体(DeviceData)是一个数据库表,它确实有一个键,不管哪个实体失败似乎是随机的。此外,我只希望在编译时看到“未定义键”错误。有谁知道问题是什么,以及如何解决?
【问题讨论】:
-
我讨厌 ria 服务。但是使用它。它在编译时非常慢并且有很多限制。如果您使用代码生成器,请检查
[Key]是否真的为项目生成。我只是很少使用t4。 EDMX 似乎更适合这类问题。 -
它没有生成属性,但我仍然不明白为什么它会导致它只是随机中断,只是通过重新启动站点来神奇地修复自己......但是我会尝试更换发电机,看看能不能修好。
-
你有没有找到解决这个问题的方法?我们也遇到了同样的问题。
-
@LarsP。同时我换了工作,我不记得我们是否找到了真正的解决方法,或者它只是神奇地自行修复......
标签: entity-framework silverlight iis wcf-ria-services ria