我正在尝试将 WCF 数据服务从托管在 VS2010 中移动到开发 Web 服务器。当我将代码移动到 IIS7 应用程序时,出现此错误:
找不到类型“Aaa.Bbb.Services.ZzzEntities”、作为 ServiceHost 指令中的服务属性值提供或在配置元素 system.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, Version=1.0.0.0, Culture=”中加载类型“ZzzEntities”中性,PublicKeyToken=null'。使用 .NET Reflector 我可以清楚地看到 Aaa.Bbb.Services.dll 包含一个名为
ZzzEntities
的类,所以我真的不知道为什么我的类型不能被创建。 最佳答案
这是命名空间之间的冲突。我正在使用 Microsoft WCF Data Services 2011 CTP2 ,所以我必须将它添加到 system.web/compilation/assemblies
中的 web.config 文件中:
<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" />