我試圖在Visual Studio中調用外部Web服務,但出現錯誤。在Visual Studio中調用外部Web服務時出現安全錯誤
System.Security.SecurityException:請求「System.Security.Permissions.SecurityPermission,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089」類型的權限失敗。 System.Security.SecurityException: 在System.Security.CodeAccessSecurityEngine.Check(對象的需求,StackCrawlMark & stackMark,布爾isPermSet) 在System.Security.CodeAccessPermission.Demand() 在System.Net.ServicePointManager.set_ServerCertificateValidationCallback(RemoteCertificateValidationCallback值)
以下是調用webservice的程序。
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)]
[return: SqlFacet(MaxSize = -1)]
public static SqlString NYP_RestGet(SqlString uri)
{
String document;
System.Net.ServicePointManager.ServerCertificateValidationCallback +=
delegate(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate,
System.Security.Cryptography.X509Certificates.X509Chain chain,
System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return true; // **** Always accept
};
// Set up the request, including authentication
WebRequest req = WebRequest.Create(Convert.ToString(uri));
((HttpWebRequest)req).UserAgent = "CLR web client on SQL Server";
req.ContentType = "application/xml";
((HttpWebRequest)req).Accept = "application/xml";
WebResponse resp = req.GetResponse();
Stream dataStream = resp.GetResponseStream();
StreamReader rdr = new StreamReader(dataStream);
document = (String)rdr.ReadToEnd();
rdr.Close();
dataStream.Close();
resp.Close();
return (document);
}
};