2011-06-10 90 views
4

我正尝试将WCF数据服务从VS2010中托管到一个开发Web服务器。当我将代码移动到IIS7应用程序时,出现此错误:无法找到WCF数据服务类型

类型'Aaa.Bbb.Services.ZzzEntities',作为ServiceHost指令中的Service属性值提供,或者在配置元素系统中提供。 serviceModel/serviceHostingEnvironment/serviceActivations找不到。

ZzzEntities.svc

<%@ ServiceHost 
    Language = "C#" 
    Factory = "System.Data.Services.DataServiceHostFactory, 
       System.Data.Services, Version=4.0.0.0, Culture=neutral, 
       PublicKeyToken=b77a5c561934e089" 
    Service = "Aaa.Bbb.Services.ZzzEntities" %> 

ZzzEntities.svc.cs

using Aaa.Bbb.Domain.Entities; 
using System.Data.Services; 
using System.Data.Services.Common; 
using System.ServiceModel.Web; 

namespace Aaa.Bbb.Services { 
    public class ZzzEntities:DataService<Domain.EntityFramework.Context> { 
     public static void InitializeService(DataServiceConfiguration config) { 
      config.UseVerboseErrors = true; 

      config.SetEntitySetAccessRule("*", EntitySetRights.All); 
      config.SetServiceOperationAccessRule("*", ServiceOperationRights.All); 

      config.DataServiceBehavior.MaxProtocolVersion = 
       DataServiceProtocolVersion.V3; 
     } 
    } 
} 

编辑:另外,Aaa.Bbb.Services.dll被编译并在IIS7 Web应用程序的\ bin目录。

编辑:继说明here我试图创造的ZzzEntities实例时出现以下错误 - System.TypeLoadException:未能从程序集“Aaa.Bbb.Services加载类型“ZzzEntities”,版本为1.0。 0.0,Culture = neutral,PublicKeyToken = null'。

使用.NET Reflector我可以清楚地看到Aaa.Bbb.Services.dll包含一个名为ZzzEntities的类,所以我真的失去了为什么我的类型无法创建。

回答

7

这是名称空间之间的冲突。我正在使用Microsoft WCF Data Services 2011 CTP2,所以我不得不将这添加到我的web.config文件中system.web/compilation/assemblies

<add assembly="Microsoft.Data.Services, Version=4.99.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
<add assembly="Microsoft.Data.Services.Client, Version=4.99.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />