[Microsoft.SqlServer.Server.SqlProcedure]
public static SqlInt32 SendMessage(SqlString provider, SqlString mess)
{
try {
WebRequest reqGET = WebRequest.Create(mess.ToString());
WebResponse resp = reqGET.GetResponse();
System.IO.Stream stream = resp.GetResponseStream();
System.IO.StreamReader sr = new System.IO.StreamReader(stream);
sr.ReadToEnd();
return 1;
}
catch(Exception ex){
}
return 0;
}
Все компилируется на ура, привязывается, но вот при вызове хранимой процедуры валится ошибка "Сбой при запросе разрешения типа "System.Net.WebPermission..."(Request for the permission of type 'System.Net.WebPermission, System...).
Как лечится:
1. Добавляем атрибут к функции [WebPermission(System.Security.Permissions.SecurityAction.Demand, ConnectPattern = @"*")]
2. Привязываем сборку с разрешением EXTERNAL_ACCESS, как то так:
CREATE ASSEMBLY hwsql
FROM 'C:\massembly\hwsql.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS
В этом случае может возникнуть косячёк The assembly is authorized when either of the following is true: the database owner (DBO) has EXTERNAL ACCESS ASSEMBLY permission and the database has the TRUSTWORTHY database property on; or the assembly is signed with a certificate or an asymmetric key that has a corresponding login with EXTERNAL ACCESS ASSEMBLY permission.FROM 'C:\massembly\hwsql.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS
Тут возможны варианты, но по простому нужно чтобы хозяин базы на которой создаете ассембли был аналогичен хозяину базы мастер. Ну или дайте хозяину базы на которой создаёте EXTERNAL ACCESS ASSEMBLY
использовано: это