我正在 Visual Studio 中开发一个 SQL Server 数据库项目,它实际上是一个用户定义函数。在此项目中,我包含 Json.NET 作为参考(使用 NuGet)。
我设法通过首先打开数据库将我的程序集和 UDF 发布(并使其工作)到我的 SQL Server 实例TRUSTWORTHY ON
(因为我的项目不安全)然后运行:
CREATE ASSEMBLY [System.Runtime.Serialization]
FROM 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Runtime.Serialization.dll'
WITH PERMISSION_SET = UNSAFE;
结果是 Json.NET 依赖的程序集(如果我不这样做,就会收到错误)
同时我读到过开启“信任”有多糟糕我试着使用非对称密钥避免打开它的方法。
在签署我自己的程序集之前,我知道我必须为System.Runtime.Serialization
因为我的项目依赖于 Json.Net,而 Json.Net 又依赖于它,但是当我运行它时,我得到了这个:
USE [master];
GO
CREATE ASYMMETRIC KEY [SystemRuntimeSerializationKey]
AUTHORIZATION [dbo]
FROM EXECUTABLE FILE = 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Runtime.Serialization.dll';
GO
Msg 15468, Level 16, State 5, Line 3
An error occurred during the generation of the asymmetric key.
这对我没有多大帮助。
那么是否可以为 .NET 框架程序集生成这样的密钥,或者是否存在除打开 TRUSTWORTHY ON 之外的解决方法?