我正在尝试将我的MOSS 2007
网络部件迁移到SharePoint 2010
环境
我的环境是Windows Server 2008 64Bit
,Visual Studio 2008
和SharePoint 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
下运行此代码,但它也产生了此错误。
请帮我解决这个错误。
答案 0 :(得分:0)
我们遇到了完全相同的问题并通过将log4net
配置文件信息的初始化置于OnInit
方法内的构造函数之外来解决它。
这也适用于私有全局变量(具有非常类似的异常),例如:
private readonly SPList _projectList = SPContext.Current.Web.GetList(SPContext.Current.Web.ServerRelativeUrl + "/Lists/Inquiries");
答案 1 :(得分:-1)
将应用程序的web.config设置为以完全信任的方式运行。 ()
最好更改代码并分配权限(请参阅代码访问安全性文档)并将自定义信任文件与应用程序一起部署。