SecurityException未被用户代码.Request请求获得类型'System.Security.Permissions.FileIOPermission的权限

时间:2009-12-22 07:07:37

标签: sharepoint

我正在尝试将我的MOSS 2007网络部件迁移到SharePoint 2010环境 我的环境是Windows Server 2008 64BitVisual Studio 2008SharePoint 2010

在将Web部件添加到场景后面的SharePoint 2010站点时,它正在访问log4net的配置文件,并且这样做会产生错误,说“ SecurityException未被用户处理代码”。

在运行这行代码时正在进行:

FileInfo fi = new FileInfo(log4netConfigFilePath);

异常类型中的确切错误:

"Request for the permission of type 'System.Security.Permissions.FileIOPermission
   , mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
   failed."

这是堆栈跟踪:

at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
   at System.Security.CodeAccessPermission.Demand()
   at System.IO.FileInfo..ctor(String fileName)
   at ProjectWorld.Logging.LogManager.Configure()
   at ProjectWorld.Logging.LogManager.EnsureConfiguration()
   at ProjectWorld.Logging.LogManager.GetLogger(WebPart webPart)
   at ProjectWorld.WebParts.PRSWebParts.QBWebPart..ctor()
   at T_c39ca68b_5b0a_4d36_b052_e470116a6771.CreateInstance()
   at System.Web.HttpRuntime.FastCreatePublicInstance(Type type)
   at System.Web.UI.WebControls.WebParts.WebPartManager.ImportWebPart(XmlReader reader, String& errorMessage)

我尝试在Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges下运行此代码,但它也产生了此错误。

请帮我解决这个错误。

2 个答案:

答案 0 :(得分:0)

我们遇到了完全相同的问题并通过将log4net配置文件信息的初始化置于OnInit方法内的构造函数之外来解决它。

这也适用于私有全局变量(具有非常类似的异常),例如:

private readonly SPList _projectList = SPContext.Current.Web.GetList(SPContext.Current.Web.ServerRelativeUrl + "/Lists/Inquiries");

答案 1 :(得分:-1)

将应用程序的web.config设置为以完全信任的方式运行。 ()

最好更改代码并分配权限(请参阅代码访问安全性文档)并将自定义信任文件与应用程序一起部署。