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()
应该提供必要的信息来识别特定问题。
我有一个 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()
应该提供必要的信息来识别特定问题。