我正在使用Microsoft SQL Server的.NET项目。在这个项目中,我需要一个使用远程Web服务的CLR存储过程(用C#编写)。所以,当存储过程在SQL服务器上执行时,它会进行Web服务调用,从而将数据包发送到远程位置。问题是,执行SP时,我得到: “System.Net.WebException:请求失败,HTTP状态403:禁止。”如何从SQL存储过程配置传出连接?
数据库用户具有完全权限,部署的CLR程序集和SP甚至标记为“不安全”,我尝试对其进行签名等,因此任何这些都不会导致问题。
当我执行完全相同的C#代码,但从一个简单的控制台应用程序而不是一个SP,它一切正常。所以我开始怀疑网络相关的问题,并且在执行SP和控制台应用程序版本时运行了数据包嗅探器。
我意识到发出的数据包有不同的目标IP地址:控制台应用程序将数据包直接发送到Web服务IP,而SP将数据包发送到我们公司使用的代理服务器。由于网络政策,后者是不允许的,并解释了“403禁止”例外。
所以我的问题归结为:我怎样才能配置SP/MS SQL服务器不使用该代理?我希望它将数据包直接发送到Web服务IP,就像测试控制台应用程序一样。 (再次,C#代码是相同的,所以它不是一个编程问题)。
我已禁用Internet Explorer中的所有代理设置,以防SQL服务器继承这些设置或其他内容。但是,没有运气。
任何帮助将不胜感激!
最好的问候, 彼得