none
请求“System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败 RRS feed

  • 问题

  • 我写了一段代码编译成一个DLL,代码如下

    WebRequest ReverseGeocodeRequest = WebRequest.Create(new Uri(GeocodeURL+Long+","+Lat+"&type="+GeocodeType));
                             HttpWebResponse ReverseGeocodeResponse = (HttpWebResponse)ReverseGeocodeRequest.GetResponse();
                    Stream ReverseGeocodeStream = ReverseGeocodeResponse.GetResponseStream();
                    StreamReader objReader = new StreamReader(ReverseGeocodeStream, System.Text.Encoding.GetEncoding("GBK"));               
                    XmlDocument ReverseGeocodeXML = new XmlDocument();
                    ReverseGeocodeXML.Load(objReader);

        编译成DLL后在WINFORM环境中调用正常,可我把这个DLL注册到SQL server 2008 r2 中,并开启了CLR,创建了一个标值函数,为什么在调用这个标值函数时提示

    请求“System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败。

             请问是怎么回事啊,哪个URL是个远程地址HTTP1.1 GET方式,返回一个XML文件 

    2011年5月24日 12:27

答案

  • 这个dll是加载到sql 的运行环境中运行,而sql运行账户可能由于权限限制,或者不足造成不能执行。

    你需要在CREATE ASSEMBLY的时候通过PERMISSION_SET设置来控制这个权限,具体可以参考MSDN。

     


    family as water
    • 已标记为答案 xiaobifei 2011年5月25日 4:32
    2011年5月24日 15:22

全部回复

  • 这个dll是加载到sql 的运行环境中运行,而sql运行账户可能由于权限限制,或者不足造成不能执行。

    你需要在CREATE ASSEMBLY的时候通过PERMISSION_SET设置来控制这个权限,具体可以参考MSDN。

     


    family as water
    • 已标记为答案 xiaobifei 2011年5月25日 4:32
    2011年5月24日 15:22
  • thank you 已经解决了
    2011年5月25日 4:32
  • 您好,现在我也碰到了这个问题:
    就是我在sql2008里注册一个dll 然后我创建发送邮件的存储过程(在页面发送邮件的方法执行成功) 但是在sql2008执行该存储过程时就报错
    sql2008代码:--注册clr
    create assembly Clrassembly from 'C:\quanxiao\quanxiao\SilverlightApplication1\CRL\bin\Debug\CRL.dll'

    go
    --发送邮件
    create proc SendEmailInfo as external name Clrassembly."CRL.SQLProc".SendEmailInfo
    go

    exec SendEmailInfo
    go

    然后报错:消息 6522,级别 16,状态 1,过程 SendEmailInfo,第 0 行
    在执行用户定义例程或聚合 "SendEmailInfo" 期间出现 .NET Framework 错误:
    System.Security.SecurityException: 请求“System.Net.Mail.SmtpPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败。
    System.Security.SecurityException:
       在 System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
       在 System.Security.CodeAccessPermission.Demand()
       在 System.Net.Mail.SmtpClient.Initialize()
       在 System.Net.Mail.SmtpClient..ctor()
       在 CRL.SQLProc.SendEmailInfo()

    2011年9月9日 1:24
  • 已经说了是权限问题,参考我上面的回复,查一下msdn。
    family as water
    2011年9月9日 3:29