对象引用未设置为对象的实例

时间:2009-10-29 05:17:48

标签: vb.net

我有一个web应用程序,仅用于保存上传的视频文件到sqlserver database.i的路径。在应用程序中有一个商业逻辑层。

我正在使用asp.net/vb.net。我把它放在bll中用于连接存储过程,

 Dim Db As Database = DatabaseFactory.CreateDatabase()

有一个错误 -

object reference not set to an instance of an object

如果有人知道请帮助我。

这是堆栈跟踪:

[NullReferenceException: Object reference not set to an instance of an object.]
Microsoft.Practices.EnterpriseLibrary.Data.DatabaseConfigurationView.get_DefaultName() +38
Microsoft.Practices.EnterpriseLibrary.Data.DatabaseMapper.MapName(String name, IConfigurationSource configSource) +65
Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.ConfigurationNameMappingStrategy.BuildUp(IBuilderContext context, Type t, Object existing, String id) +122
Microsoft.Practices.ObjectBuilder.BuilderBase`1.DoBuildUp(IReadWriteLocator locator, Type typeToBuild, String idToBuild, Object existing, PolicyList[] transientPolicies) +316
Microsoft.Practices.ObjectBuilder.BuilderBase`1.BuildUp(IReadWriteLocator locator, Type typeToBuild, String idToBuild, Object existing, PolicyList[] transientPolicies) +168
Microsoft.Practices.ObjectBuilder.BuilderBase`1.BuildUp(IReadWriteLocator locator, String idToBuild, Object existing, PolicyList[] transientPolicies) +104
Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.EnterpriseLibraryFactory.BuildUp(IReadWriteLocator locator, IConfigurationSource configurationSource) +228
Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.EnterpriseLibraryFactory.BuildUp(IConfigurationSource configurationSource) +65
Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.NameTypeFactoryBase`1.CreateDefault() +72
Microsoft.Practices.EnterpriseLibrary.Data.DatabaseFactory.CreateDatabase() +86
Uploader.BllUpdate.SaveFileDetails() in D:\Developers\Sinoy\uploader\Uploader\Uploader\BLL\BllUpdate.vb:37
Uploader.Upload.UploadBtn_Click(Object sender, EventArgs e) in D:\Developers\Sinoy\uploader\Uploader\Uploader\Forms\Upload.aspx.vb:17
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102

5 个答案:

答案 0 :(得分:0)

对象引用未设置为对象的实例意味着存在一个在使用之前未实例化的引用。引用仍然为null(或者在VB术语中,Nothing)。

捕获异常并检查其发生位置的堆栈跟踪。

答案 1 :(得分:0)

通常当你得到那个错误时,是因为在为类的实例分配了一个类变量(例如DatabaseFactory或该类中的变量)之前,就像在Dim语句或赋值中使用New关键字一样。还有其他方法可以将实例分配给变量。如果不这样做,您将收到此错误消息。

答案 2 :(得分:0)

调用Microsoft Enterprise Library静态方法DatabaseFactory.CreateDatabase导致Microsoft Enterprise Library中的某些内容崩溃 - 它使用的是一个没有值的变量(Nothing)。由于某种原因,它无法连接到您的数据库。为什么它不会引发一个我不知道的更具信息性的例外 - 你必须问微软。

我对企业库一无所知,但我想我会检查你的web.config or app.config configuration settings查看默认数据库的数据库连接字符串。这是基于documentationGoogling of online forums的5秒略读。

答案 3 :(得分:0)

首先,确保设置默认数据库,即

此外,如果它是虚拟目录,请确保该虚拟目录中的Web.config文件不会被root directoriy的Web.config EnterpriseLibrary相关元素覆盖。

答案 4 :(得分:0)

你检查了你的web.config吗?您是否正确设置了数据库连接字符串?当您的连接字符串丢失或不正确时,也会发生此问题。