C# Class returns 空对象

C# Class returns null object

我有一个 class 库,我正在使用控制台应用程序对其进行调试。这非常有效。

class 旨在与服务器上现有的 Windows 服务一起使用。我没有太多访问服务器的权限。

我更新服务以利用 class 库。它包含在解决方案的 class 库中,被引用,并且包含在页面中。

但是,当它在服务器上构建时,它 returns 是一个空对象。

相关服务篇:

using MyNamespace;
...
private void TimerTick(){
    //this is called every minute
    EventLog.WriteEntry("myLog", "Start test", EventLogEntryType.Information);
    try
    {
        EventLog.WriteEntry("myLog", "I see this", EventLogEntryType.Information);
        MyClass test1 = new MyClass(); //Error occurs here
        EventLog.WriteEntry("myLog", "I never see this", EventLogEntryType.Information);
        test1.MyFunction();
    }
    catch (Exception e)
    {
        EventLog.WriteEntry("myLog", e.Message, EventLogEntryType.Information);
    }
    EventLog.WriteEntry("myLog", "Conclude test", EventLogEntryType.Information);
}

以及相关的class:

namespace MyNamespace
{
    public class MyClass
    {

        public SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnection"].ConnectionString);
        public void MyFunction(){
            EventLog.WriteEntry("MyLog", "Get links", EventLogEntryType.Information);
        }
    }
}

在事件日志中我得到了标准:

Object reference not set to an instance of an object.

在服务器上构建和部署没有错误。该服务按预期运行,只是在尝试实例化 class.

时出现空引用异常

我是 C#/.net 的新手

当我收到的唯一错误消息是通过 EventLog 时,是否有更好的方法来解决此问题?

class实例化抛出空引用异常的可能原因有哪些?

我尝试过的东西

首先,使用 Exception.ToString() 获取堆栈跟踪,而不是像我最初那样使用 Exception.Message。这给了我更多的调试信息。

其次,查看 class 构造函数本身是否存在错误,因为 class 实例化本身不能抛出空引用。

Exception.Message returns 信息有限。在记录错误时使用 Exception.ToString() 可以记录更好的调试信息:

try
{
   //your code
}
catch (Exception e)
{
    EventLog.WriteEntry("myLog", e.ToString(), EventLogEntryType.Information);    
}

class 实例化也不可能抛出空引用异常 - 如果您在实例化过程中看到空引用异常,则 class 中的某些内容一定会抛出错误。使用 Exception.ToString() 应该提供必要的信息来识别特定问题。