我有Visual Studio 2013。
我创建了一个数据库项目。
我为该项目添加了一个CLR存储过程,我想从中调用一个WCF服务。
谁能帮我?
我希望能够在不更改我的程序集的情况下更改服务地址,类似于我在web.config
中使用我的WCF客户端配置的endpoint
部分可以执行的操作。
经过大量的搜索后我发现了这个,并在VS 2014中花了很多时间
Database Project
称为“CLR_Test”Library
Serivce Refrence
添加到“CLR_Test”,然后将“CLR_Service_Client”的引用添加到“CLR_Test”中
4.您必须使用以下代码更改DB选项以运行不安全的程序集
ALTER DATABASE SaleAutomation SET TRUSTWORTHY ON
RECONFIGURE
Project Properties
选项卡中的“CLR_Test”SQLCLR
中将Permission level
设置为Unsafe
(另一种方式是在发布项目之后,您从sql server管理中更改其级别,另一种方式是您向发布脚本添加权限级别,您可以使用它们中的每一个,
但你必须注意到,如果你使用project properties
只有“CLR_Test”项目自动创建Unsafe
,你必须使用其他方式来设置“CLR_Service_Client”Unsafe
)
6.运行此脚本添加Sqlserver能够运行wcf服务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\Framework64\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 (x86)\Reference Assemblies\Microsoft\Framework\v3.0\System.IdentityModel.dll'
with permission_set = UNSAFE
GO
CREATE ASSEMBLY
[System.IdentityModel.Selectors] from
'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\System.IdentityModel.Selectors.dll'
with permission_set = UNSAFE
GO
CREATE ASSEMBLY -- this will add service modal
[Microsoft.Transactions.Bridge] from
'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\Microsoft.Transactions.Bridge.dll'
with permission_set = UNSAFE
GO
CREATE ASSEMBLY -- this will add service modal
[System.Runtime.Serialization] from
'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\System.Runtime.Serialization.dll'
with permission_set = UNSAFE
GO
CREATE ASSEMBLY -- this will add service modal
[System.ServiceModel] from
'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\System.ServiceModel.dll'
with permission_set = UNSAFE
GO
从.Net v4.0起,这一切都没有实际意义,System.ServiceModel是一个混合的MSIL,这意味着它使用将生成的本机代码:
程序集“System.ServiceModel”的CREATE ASSEMBLY失败,因为程序集“microsoft.visualbasic.activities.compiler”格式不正确或者不是纯.NET程序集。无法验证的PE标头/本机存根。对于我们想要做的事情来说,这本来是一个非常优雅的解决方案,但微软再次让我们悬在悬崖上
我找到了解决问题的新方法如果你在服务参考中将你的qazxsw poi称为qazxsw poi你就不必做任何事情
wcf service