我遇到了必须对外部服务 SmartyStreets 进行 API 调用的 SQL Server 程序集的问题。我创建了一个引用 SmartyStreets DLL 的 DLL。这个新的 DLL 将获取地址字段,调用 API 并返回一个 varchar(max)。
在 VS 中进行测试时,我为输入地址创建了一个基本表单,它会调用 DLL,然后用结果填充一个文本框。我的新 DLL 有效。
我为 SmartySteets DLL 创建了程序集,它的设置如下:
CREATE ASSEMBLY SmartyStreets from 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\smartystreets-dotnet-sdk.dll' WITH PERMISSION_SET = UNSAFE;
我为我的 DLL(它引用 SmartyStreets DLL)创建了程序集,如下所示:
CREATE ASSEMBLY SmartyStreets_API from 'C:\Program Files\Microsoft SQL Server\MSSQL14.HMARK\MSSQL\Binn\SmartyStreetsDLL.dll' WITH PERMISSION_SET = UNSAFE;
该函数已创建:
CREATE function CLR_AddressStandardization (
@sAddress1 nvarchar(max)
, @sAddress2 nvarchar(max)
, @sCity nvarchar(max)
, @sState nvarchar(max)
, @sZIP nvarchar(max)
, @sCountry nvarchar(max)) returns nvarchar(max)
EXTERNAL NAME SmartyStreets_API.[SmartyStreetsDLL.SSDLL].StandardizeAddress
现在我调用新函数:
select dbo.CLR_AddressStandardization('18600 Malyn','','Fraser','MI','48026','')
它返回“错误:请求被中止:无法创建 SSL/TLS 安全通道”。
我相信有些东西阻止了 SmartyStreets DLL 在外面拨打电话的能力,但我不知道如何解决这个问题。
有任何想法吗?