- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有以下代码:
EventLog el1 = new EventLog();
el1.Log = "Application";
el1.Source = "SharePoint Foundation";
el1.WriteEntry("Start", EventLogEntryType.Information);
el1.WriteEntry("SPContext : " + (SPContext.Current == null ? "nothing" : "something"), EventLogEntryType.Information);
el1.WriteEntry("Web ID: " + (SPContext.Current.Web == null ? "nothing" : "something"), EventLogEntryType.Information);
前两个 WriteEntry
记录正常,第二个记录“某事”。但是第三个总是会出错。我的大脑只是被炸毁了,还是这永远不会发生?
请注意:第二个 WriteEntry
将“某事”写入日志。这意味着 SPContext.Current
不为空。
更新:
我不知道这是否有影响,但我使用 SPSecurity.RunWithElevatedPrivileges 以提升的权限运行它。这是我的代码:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
try
{
EventLog el1 = new EventLog();
el1.Log = "Application";
el1.Source = "SharePoint Foundation";
el1.WriteEntry("Start", EventLogEntryType.Information);
el1.WriteEntry("SPContext : " + (SPContext.Current == null ? "nothing" : "something"), EventLogEntryType.Information);
el1.WriteEntry("Web ID: " + (SPContext.Current.Web == null ? "nothing" : "something"), EventLogEntryType.Information);
}
catch (Exception ex)
{
EventLog el1 = new EventLog();
el1.Log = "Application";
el1.Source = "SharePoint Foundation";
el1.WriteEntry(ex.Message + System.Environment.NewLine + ex.StackTrace, EventLogEntryType.Error);
throw ex;
}
});
还有我的堆栈跟踪:
Object reference not set to an instance of an object.
at Copy_Special.CrossSiteCopy.<>c__DisplayClass1.<Execute>b__0()
仅供引用,此代码是 SharePoint 自定义工作流操作的一部分...
最佳答案
更新:根据问题中提供的新说明和此答案下方的评论完全重写了我的答案。
最后一行至少应该如下所示:
SPContext.Current == null || SPContext.Current.Web == null ? "nothing" : "something"
SPContext.Web
属性包含一个相当复杂的逻辑,在某些情况下会创建一个新的 SPWeb
实例。因此,它很可能会因 NullReferenceException
而失败,尽管没有记录该行为。在许多情况下,它还会产生 InvalidOperationException
。
在提升的权限下,没有有效的 SPContext.Current
。您必须再次打开该网站以检索可在不同安全环境下工作的 SPWeb
实例。
正确提升权限的示例代码:
// site and web objects working with the current user's privileges
SPSite userSite = SPContext.Current.Site;
SPWeb userWeb = SPContext.Current.Web;
// elevate privileges
SPSecurity.RunWithElevatedPrivileges(delegate()
{
// get new site and web objects working with elevated privileges
using (SPSite elevatedSite = new SPSite(userSite.ID))
{
using (SPWeb elevatedWeb = ElevatedsiteColl.OpenWeb(userWeb.ID))
{
// …code using elevatedSite and elevatedWeb…
}
}
});
关于c# - 这怎么会抛出 NullReferenceException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5081251/
当我单步执行以下代码时,第二行的 report 为空。但是,第三行生成 NullReferenceException。 member this.setTaggedResearchReportList
我正在尝试按照建议从 URL 获取查询字符串 here ,但我收到 NullReferenceException。我的代码与链接帖子中的代码之间的唯一区别是我的代码是静态的,我看不出这会如何导致错误。
我有以下程序,这是一段示例代码,展示了 C# 反射如何对类进行操作。一切正常,完全没有问题。 public class Program { public static void Main() {
我在以下代码中使用 F# 类型和数据结构(我在 Mac 上使用 Monodevelop,这仅发生在 Interactive 中): type UnbalancedSet = | E |
我有一个 asp.net/C# 类可以调整图像的大小以作为文件缓存在服务器上,但是确定使用哪个编码器的代码部分似乎偶尔会抛出 NullReferenceException。 下面是初始化和传回编码器的
我已经向几位同事展示了这一点,但没有人给出解释。我纯粹偶然遇到了这个问题,因为我以为我在代码中发现了一个错误,但惊讶地发现代码实际上运行了。这是一个简化版本。这已通过 XE-2 完成。 到目前为止,与
这把我难住了。我试图优化 Noda Time 的一些测试,其中我们进行了一些类型初始值设定项检查。我想在将所有内容加载到新的 AppDomain 之前,我想找出类型是否有类型初始值设定项(静态构造函数
当我的页面加载时,我从 SQLite 数据库加载一个列表,有时在加载时我会得到 NullReferenceException ,并显示错误:对象引用未设置为对象的实例。 它在 SQLite 类文件中破
这个问题已经有答案了: What is a NullReferenceException, and how do I fix it? (26 个回答) 已关闭 4 年前。 我收到以下异常: Unhan
当我的页面加载时,我从 SQLite 数据库加载一个列表,有时当它加载时我得到 NullReferenceException 错误说 Object reference not set to an对象的
我有以下代码: try { using (var stream = new MemoryStream()) { var ms = stream; if (con
这个问题已经有答案了: What is a NullReferenceException, and how do I fix it? (26 个回答) 已关闭 4 年前。 我收到以下异常: Unhan
我有以下代码。 XElement opCoOptOff = doc.Descendants(ns + "OpCoOptOff").FirstOrDefault(); String opCo = o
这个问题在这里已经有了答案: What is a NullReferenceException, and how do I fix it? (27 个答案) 关闭 4 年前。 我有队列代码但抛出 N
所以我正在制作一个应用程序,一切都运行良好,直到发生以下情况: 我已经通过调试器进行了检查,但无法找到导致此异常的确切原因。我感觉根本原因在 SQL 方面,因为这是我最近更改的唯一部分,但我需要确切地
class Puzzle { private int PUZZLESIZE = 3; private int col, row; priva
我有一项学校作业,我快完成了,只剩下一件事了。每次启动程序时,我都会收到 NullReferenceException。除了抛出异常的 ListView 外,一切都按预期工作。 这是来自主窗体: pr
我向 Form1 组件添加了一个面板。该面板名为 panel1。 浏览通用列表时,我想动态添加标签。看看我的小代码: if (list.Count > 0) { foreach (TLClas
这是我的场景:我有一个控制台应用程序,我正在尝试使用以下代码处理控制台的“关闭事件”: static void Main(string[] args) { SetConsoleCtrlHand
这可能已经有人问过了。我搜索了 SO 并发现了一些关于 Null VS String.Empty 的问题,但我很好奇为什么以下语句不会抛出 NullReferenceException: String
我是一名优秀的程序员,十分优秀!