C# 部署WCF客户端时出错-“在SQL目录中找不到system.servicemodel”

C# 部署WCF客户端时出错-“在SQL目录中找不到system.servicemodel”,c#,sql-server,wcf,triggers,clr,C#,Sql Server,Wcf,Triggers,Clr,我正在尝试从中完成教程http://www.codeproject.com/Articles/21149/Invoking-a-WCF-Service-from-a-CLR-Trigger 但我在尝试部署客户端时遇到问题,输出中出现以下错误: 部署错误SQL01268:.Net SqlClient数据提供程序:Msg 6503,级别16,状态12,第1行程序集“system.servicemodel,version=3.0.0.0,culture=neutral,publickeytoken=b

我正在尝试从中完成教程http://www.codeproject.com/Articles/21149/Invoking-a-WCF-Service-from-a-CLR-Trigger 但我在尝试部署客户端时遇到问题,输出中出现以下错误:

部署错误SQL01268:.Net SqlClient数据提供程序:Msg 6503,级别16,状态12,第1行程序集“system.servicemodel,version=3.0.0.0,culture=neutral,publickeytoken=b77a5c561934e089”。未在SQL目录中找到

我正在使用c 2010、.NET 4.0和SQL Server Express 10

我曾尝试将项目更改为使用.NET framework 3.0和3.5,但仍然收到相同的错误。请问有人知道如何解决这个问题吗

编辑

这可能与我尝试将以下程序集添加到SQL Server时遇到的错误有关

CREATE ASSEMBLY SMDiagnostics 
FROM 'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\SMDiagnostics.dll'
WITH permission_set = UNSAFE
GO

CREATE ASSEMBLY [System.Web] 
FROM 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Web.dll'
WITH permission_set = UNSAFE
GO

CREATE ASSEMBLY [System.Messaging] 
FROM 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Messaging.dll'
WITH permission_set = UNSAFE
GO

CREATE ASSEMBLY [System.IdentityModel] 
FROM 'C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\System.IdentityModel.dll'
WITH permission_set = UNSAFE
GO

CREATE ASSEMBLY [System.IdentityModel.Selectors] 
FROM 'C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\System.IdentityModel.Selectors.dll'
WITH permission_set = UNSAFE
GO

-- this will add service modal
CREATE ASSEMBLY [Microsoft.Transactions.Bridge] 
FROM 'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication     Foundation\Microsoft.Transactions.Bridge.dll'
WITH permission_set = UNSAFE
GO

经过两天的反复试验,我终于让它工作了,就像这样:

在Windows Server 2008 x64、SQL Server 2008 64位、使用Framework 3.0构建的程序集DLL上,任何CPU。我建议您在SQL 2008中使用.NET3

alter数据库[TTBackup] 树立诚信; 去 使用TTBackup -注册我们的程序集引用的程序集。 从“C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\SMdiagnostics.dll”创建具有权限\u set=unsafe的程序集SMdiagnostics授权dbo 从“C:\Windows\Microsoft.NET\Framework64\v2.0.50727\System.Web.dll”创建程序集[System.Web]授权dbo,权限设置=不安全 从“C:\Program Files x86\Reference Assemblys\Microsoft\Framework\v3.0\System.Runtime.Serialization.dll”创建程序集[System.Runtime.Serialization]授权dbo,权限设置=不安全 从“C:\Program Files x86\Reference Assemblys\Microsoft\Framework\v3.0\System.IdentityModel.Selectors.dll”创建程序集[System.IdentityModel.Selectors],权限设置=不安全 从“C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Messaging.dll”创建程序集[System.Messaging]授权dbo,权限设置=不安全 从“C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\Microsoft.Transactions.Bridge.dll”创建程序集[Microsoft.Transactions.Bridge],权限设置为不安全 -登记我们的集会 从“D:\TTDatabaseIntegration.dll”创建程序集[TTDatabaseIntegration]授权dbo,权限设置=不安全 去 -从CLR注册UDF 创建函数[ListImportTemplates]返回TABLETemplateID int,TemplateName NVARCH4000 作为外部名称[TTDatabaseIntegration]。[UserDefinedFunctions]。[ListImportTemplates] 去 -测试我的功能 从dbo中选择*。[ListImportTemplates] 请注意,大多数引用的DLL是32位的,而System.Web是64位的。这是唯一适合我的方法

笔记: 起初我注册了64位程序集,但它引发了运行时异常:System.IO.FileLoadException:无法加载文件或程序集'System.ServiceModel,Version=3.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089'或其依赖项之一。主机存储中的程序集与GAC中的程序集具有不同的签名。HRESULT异常:0x8013100有关详细信息,请参阅Microsoft知识库文章949080

最后,我将GAC中的文件按大小与我在SQL中注册的文件进行了比较。GAC位于C:\Windows\assembly,但您无法在资源管理器中查看该文件夹,我一直在使用它。这就是我发现GAC中的版本是32位版本的原因

您可以通过以下查询查看已注册的程序集:从sys.assemblies中选择*

逐步解释的参考资料:
这可能是相关的:我运行了这个SQL命令EXEC dbo.sp_changedbowner@loginame=N'sa',从中找到@map=false,部署成功了!尽管它现在部署了客户端,但它仍然无法工作。对于任何感兴趣的人,我正在尝试一种不同的方法: