C# 加载SQL CLR XmlSerializer程序集时出错

C# 加载SQL CLR XmlSerializer程序集时出错,c#,.net,visual-studio,sqlclr,C#,.net,Visual Studio,Sqlclr,我正在Visual Studio 2015 C#中开发一个解决方案,在这里我使用存储过程从SQL Server调用Internet上的web服务 (SQL Server和Visual studio安装在不同的服务器上) 从SQL Server中的存储过程启动调用时,会收到以下错误消息: “无法加载文件或程序集“…(路径)…\assemblyname.XmlSerializers.dll”或其依赖项之一。系统找不到指定的文件” 堆栈跟踪: 位于System.Reflection.AssemblyN

我正在Visual Studio 2015 C#中开发一个解决方案,在这里我使用存储过程从SQL Server调用Internet上的web服务 (SQL Server和Visual studio安装在不同的服务器上)

从SQL Server中的存储过程启动调用时,会收到以下错误消息:

“无法加载文件或程序集“…(路径)…\assemblyname.XmlSerializers.dll”或其依赖项之一。系统找不到指定的文件”

堆栈跟踪: 位于System.Reflection.AssemblyName.nGetFileInformation(字符串s)

位于System.Reflection.AssemblyName.GetAssemblyName(字符串汇编文件)

at StoredProcedures.SqlStoredProcedure1(字符串区域)

我一直在寻找问题的解决方案,并遵循我发现的建议:

  • 在SQL Server中,在上设置Trustly并启用CLR
  • 在Visual Studio中使用sgen.exe后生成序列化程序集
  • 禁用CLR异常设置以防止抛出异常以中断执行
  • 验证序列化程序集依赖项,将这些程序集与序列化程序集放在同一目录中
  • 在数据库项目中尝试不同的权限级别(安全、不安全、外部访问)
  • 使用“添加服务引用”和“添加Web引用”来生成Web服务的代理(给出相同的错误)进行测试
  • 在reference.cs文件中,添加[System.Xml.Serialization.XMLSerializationRassemblyAttribute]和序列化程序集的路径
  • 在带有“AssemblyName.GetAssemblyName”和“assembly.Load”的代码中加载序列化程序程序集(将其添加到代码中可以消除错误”无法加载 动态生成的程序集“)
我真的很感激你能帮我解决这个问题

问候
Christer

您要发布到哪个版本的SQL Server?使用.NET Framework 3.5.1的SQL Server 2008否,您不能在SQL Server/SQLCLR(最后一点)中动态加载程序集。假设已生成序列化程序集,是否已将其加载到SQL Server中?这是你项目中的参考资料吗?如果它是引用,则在其属性下,“Model Aware”应设置为
True
,这将导致发布过程(即SSDT)为其编写脚本并将其包含在发布脚本中。是的,我已将序列化程序集加载到SQL Server中,并在项目中为其添加了e引用。我现在已更改了该属性“Model aware”为True,并且我还注释掉了加载程序集的代码中的行。通过这些更改,我将项目发布到SQL Server并运行存储过程,并收到以下错误消息:LoadFrom()、LoadFile()、Load(byte[])和LoadModule()已被主机禁用。StackTrace:at System.Reflection.Assembly.\u nLoad(AssemblyName文件名、字符串代码基、证据assemblySecurity、AssemblyLocationHint、StackScrawMark和stackMark、Boolean throwOnFileNotFound、Boolean for Inspection)