SPContext.Current对象的许多属性都会抛出SecurityException。 (与SPContext.Current.Fields类似,SPContext.Current.Site中的许多属性(请参阅详细信息)。
哪里可能是问题?有人可以指出我正确的方向吗?
谢谢。
从立即窗口:
SPContext.Current.Site
{Microsoft.SharePoint.SPSite}
AllowRssFeeds: true
AllowUnsafeUpdates: 'SPContext.Current.Site.AllowUnsafeUpdates' threw an exception of type 'System.Security.SecurityException'
AllWebs: {Microsoft.SharePoint.SPWebCollection}
ApplicationRightsMask: 9223372036854775807
Audit: {Microsoft.SharePoint.SPAudit}
CatchAccessDeniedException: true
CertificationDate: 'SPContext.Current.Site.CertificationDate' threw an exception of type 'System.Security.SecurityException'
ContentDatabase: {Microsoft.SharePoint.Administration.SPContentDatabase}
CurrentChangeToken: 'SPContext.Current.Site.CurrentChangeToken' threw an exception of type 'System.Security.SecurityException'
...
甚至例外也有例外:
Exception Window http://img41.imageshack.us/img41/442/ss20100204112542.png
ULS在此时发生异常,发生异常时: ULS Log http://img715.imageshack.us/img715/465/ss20100204113046.png
事件查看器有很多错误
有关Alternate的错误 访问映射(有时我访问 来自IP地址的SharePoint,而不是来自 主机名,因为主机名无法解析 在我的VPN,但这是一个不同的 问题):
无法找到源(Windows SharePoint Services 3)中的事件ID(8214)的说明。该 本地电脑可能没有 必要的注册信息或 消息DLL文件以显示消息 从远程计算机。你可能 能够使用/ AUXSOURCE =标志来 检索此描述;看帮助 并支持细节。该 以下信息是其中的一部分 event:请求了一个URL, http://192.168.0.9,但没有 已在备用访问中配置 映射。一些链接可能指向 的备用访问URL 默认区域http://serveris。 查看备用访问映射 这个Web应用程序在 http://serveris:38590/_admin/AlternateUrlCollections.aspx 并考虑添加 http://192.168.0.9作为公众 备用访问URL(如果有) 经常使用。帮助解决此错误: http://go.microsoft.com/fwlink/?LinkId=114854
答案 0 :(得分:1)
我知道我必须使用代码来确保从非Web上下文执行时存在SPContext。
public static void EnsureSPContext(this SPWeb web)
{
// Ensure HttpContext.Current
if (HttpContext.Current == null)
{
HttpRequest request = new HttpRequest("", web.Url, "");
HttpContext.Current = new HttpContext(request,
new HttpResponse(TextWriter.Null));
}
// SPContext is based on SPControl.GetContextWeb(), which looks here
if (HttpContext.Current.Items["HttpHandlerSPWeb"] == null)
HttpContext.Current.Items["HttpHandlerSPWeb"] = web;
}
答案 1 :(得分:0)
啊,这个问题现在已经在第三次踩到同一个耙子后就解决了。
它发生在WebPart构造函数中(不知道它是否起作用,但是继承自Microsoft.SharePoint.WebPartPages.WebPart
)并且SPContext对象被搞砸了。
有趣的是它在我的开发环境中有效。