首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF数据服务的VerificationException

WCF数据服务的VerificationException
EN

Stack Overflow用户
提问于 2015-04-22 21:20:20
回答 2查看 543关注 0票数 3

我使用.Net 4.5.2和实体框架6.1.3创建了一个带有实体框架的基本WCF数据服务。数据库中只有一个表。

下面是配置:

代码语言:javascript
复制
public class MyDataService : DataService<DataItemsDataContext>
    {
        // This method is called only once to initialize service-wide policies.
        public static void InitializeService(DataServiceConfiguration config)
        {            
            config.UseVerboseErrors = true;
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
            config.SetEntitySetAccessRule("DataItem", EntitySetRights.All);
        }
    }

当我开始这个项目的时候,我可以看到:

网址:http://localhost:49570/MyDataService.svc/

内容:

代码语言:javascript
复制
<service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xml:base="http://localhost:49570/MyDataService.svc/">
<workspace>
<atom:title>Default</atom:title>
<collection href="DataItem">
<atom:title>DataItem</atom:title>
</collection>
</workspace>
</service>

当我选择桌子时,我会得到这样的例外:

网址:http://localhost:49570/MyDataService.svc/DataItem

内容:

代码语言:javascript
复制
<m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<m:code/>
<m:message xml:lang="en-US">An error occurred while processing this request.</m:message>
<m:innererror>
<m:message>Operation could destabilize the runtime.</m:message>
<m:type>System.Security.VerificationException</m:type>
<m:stacktrace>
 at: queryable_reader(Object )
 at: System.Data.Services.Providers.ReflectionServiceProvider.GetQueryRootForResourceSet(ResourceSet container)
 at: System.Data.Services.Providers.ReflectionDataServiceProvider.GetQueryRootForResourceSet(ResourceSet resourceSet)
 at: System.Data.Services.Providers.DataServiceProviderWrapper.GetQueryRootForResourceSet(ResourceSetWrapper resourceSet)
 at: System.Data.Services.RequestUriProcessor.ComposeExpressionForEntitySet(SegmentInfo segment, IDataService service, Boolean isLastSegment, Boolean checkRights)
 at: System.Data.Services.RequestUriProcessor.ComposeExpressionForSegments(IList`1 segments, IDataService service, Boolean isCrossReferencingUri)
 at: System.Data.Services.RequestUriProcessor.ProcessRequestUri(Uri absoluteRequestUri, IDataService service, Boolean internalQuery)
 at: System.Data.Services.DataService`1.ProcessIncomingRequestUri()
 at: System.Data.Services.DataService`1.HandleRequest()
</m:stacktrace>
</m:innererror>
</m:error>

可能是一些.Net错误

是什么导致的?我该换什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-27 07:54:48

它看起来确实是一个bug (或者至少是一个限制性的特性)。

首先,我使用EntityFramework6.1.3作为数据库ORM,出现了错误。

当我切换回EntityFramework5.0时,服务正常工作。

根据这个KB文章

假设您将.NET框架的早期版本升级到计算机上的.NET Framework4.5。当您使用一些第三方控件时,可能会收到System.Security.VerificationException异常。如果下列条件为真,则会发生此问题:

  • 第三方控件使用泛型类型。
  • CLR验证器是通过声明标记为安全透明的程序集来启用的.

我认为,EF 6.x使用泛型类型,因此会导致问题。

解决方案是使用实体框架5.0。而不是实体框架6.x.

票数 1
EN

Stack Overflow用户

发布于 2015-09-22 16:20:08

http://blogs.msdn.com/b/odatateam/archive/2013/10/02/using-wcf-data-services-5-6-0-with-entity-framework-6.aspx有一个可以帮助你的Nuget包,但是它还在发布前( 2015/09/22)。

从2013年10月开始:“现在有一个令人兴奋的消息:您终于可以在实体框架6+中使用WCF数据服务了!今天,我们将上传一个名为WCF数据服务实体框架提供者的新NuGet包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29809072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档