繁体   English   中英

调用Web服务的SQL CLR存储过程接收到System.Net.WebException:请求失败,HTTP状态为415:不支持的媒体类型

[英]SQL CLR Stored Procedure calling Web Service receives System.Net.WebException: The request failed with HTTP status 415: Unsupported Media Type

我已经在Visual Studio 2012(目标框架:3.5)中创建了一个SQL CLR项目,该项目将调用Web服务(WCF)。 最初,我在项目中创建了对Web服务的Web引用,但是在执行创建的存储过程时,我一直得到“无法加载动态生成的程序集”。 经过大量的搜索之后,我使用了wsdl实用程序来从Web服务的WSDL创建代码并将其添加到项目中。

由于sgen实用程序对我不起作用,因此我已在项目的属性页中打开了“生成序列化程序集”以生成序列化DLL。 在数据库(SQL Server 2008)端,我启用了CLR并将数据库的可信任度设置为on。

然后,我在数据库中注册了CLR程序集和序列化DLL,并创建了如下过程:

CREATE ASSEMBLY [Database] FROM 'C:\MyProject\bin\Debug\Database.dll' WITH PERMISSION_SET = UNSAFE;
CREATE ASSEMBLY [Database.XmlSerializers] FROM 'C:\MyProject\bin\Debug\Database.XmlSerializers.dll' WITH PERMISSION_SET = UNSAFE;  

CREATE PROCEDURE [dbo].[XSP_AlertReachedMilestone] @milestoneID INT 
 WITH EXECUTE AS CALLER
AS EXTERNAL NAME [Database].[StoredProcedures].[XSP_AlertReachedMilestone] 

但是,当我执行存储过程时,我收到了“不受支持的媒体类型”异常。 我对错误进行了搜索,这是建议检查客户端(数据库)和Web服务的SOAP版本的建议之一。 我已经验证Web服务使用SOAP 1.2,但是我不知道如何检查SQL Server使用的SOAP版本。

另一个建议检查客户端(数据库)的内容/ MIME类型,但同样,我也不知道如何检查。

有什么想法可以解决此错误吗?

我已经解决了这个问题。 我发现问题出在与WCF和CLR不兼容的Web参考上。 找到这些信息后,我使用wsdl.exe实用程序生成了Web服务的代理类,但是它无法正确创建代码。 使用svcutil.exe实用工具生成代理类为我完成了窍门。 然后,将生成的代理类添加到我的项目中并编译程序集。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM