2011-08-23 74 views
1

的实例我有一个客户端应用消耗WCF服务抛出Error未设置为一个对象的一个​​实例DatabaseFactory.CreateConnection()抛出对象引用不设置为一个对象

对象引用。

详情:

我使用WCF服务与微软的企业库数据库的连接,该服务运行良好的自我托管环境,但如果托管作为windows service抛出一个错误。我无法调试WCF服务,因为它是作为Windows服务托管的,所以我尝试使用try catch块来找出问题出在哪里。

我碰到这两条线,我认为是最可疑的

Database db = DatabaseFactory.CreateDatabase(); 
DbConnection conn = db.CreateConnection(); 

我已经设置的配置文件我的默认数据库。我认为第二行必须是原因。

请帮忙。

试图找到堆栈溢出类似的问题,但失败了,因此张贴。

附加提问语句错误扣+堆栈跟踪...

enter image description here

堆栈跟踪

在Microsoft.Practices.EnterpriseLibrary.Data.DatabaseConfigurationView.get_DefaultName( )

at Microsoft.Practic es.EnterpriseLibrary.Data.DatabaseMapper.MapName(字符串名称,IConfigurationSource configSource)

在Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.ConfigurationNameMappingStrategy.BuildUp(IBuilderContext上下文中,T型,对象现有,字符串ID)

在Microsoft.Practices.ObjectBuilder.BuilderBase`1.DoBuildUp(IReadWriteLocator定位器,类型typeToBuild,字符串idToBuild,对象现有,PolicyList [] transientPolicies)

在Microsoft.Practices.ObjectBuilder.BuilderBase`1.BuildUp( IReadWriteLocator locator,Type typeToBuild,String idToBuild,Object existing,PolicyList [] transientPolicies)

在Microsoft.Practices.ObjectBuilder.BuilderBase`1.BuildUp [TTypeToBuild](IReadWriteLocator定位器,字符串idToBuild,对象现有,PolicyList [] transientPolicies)

在Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder .EnterpriseLibraryFactory.BuildUp [T](IReadWriteLocator定位器,IConfigurationSource configurationSource)

在Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.EnterpriseLibraryFactory.BuildUp [T](IConfigurationSource configurationSource)

在Microsoft.Practices。恩terpriseLibrary。Common.Configuration.ObjectBuilder.NameTypeFactoryBase`1.CreateDefault()

在Microsoft.Practices.EnterpriseLibrary.Data.DatabaseFactory.CreateDatabase()

在d WCFService.Service1.ExecuteSFDS(Cmd的CmdObj,的Int32 executionType) :\ Projects \ WCFService \ WCFService \ Service1.cs:line 32

+0

很难说确切的问题是什么,但是您可以尝试的两件事是1:去掉代码并将其放在控制台应用程序中进行调试2:按照以下步骤调试Windows服务:http: //msdn.microsoft.com/en-us/library/7a50syb3(v=VS.100).aspx –

+0

好的...我能够调试,发现错误是在第一行,即在创建数据库时。 – Bravo

+0

您是否能够在调试时从给出的异常中解决该问题?如果不是,你可以发布异常(内部也是如此) –

回答

1

我几乎肯定这是因为app.config没有复制到输出。确保配置文件位于运行进程的目录中,其名称为“YourServiceName”.exe.config

如果是,在调试过程中查看是否可以使用ConfigurationManager获取连接字符串, ,确保连接字符串的名称是正确的。

编辑

末从评论结果:

我错过了在输出配置文件中的连接字符串,其次我已经定义相同的端点和基地址,所以我就改EndPoint地址为“”。

+0

我有app.config复制到我的输出,但我没有连接字符串那里。只要我添加连接字符串,我得到一个错误**无法连接到net.tcp://本地主机... TCP错误代码10061 **所以我删除了连接字符串。 – Bravo

+0

详细错误是“元数据包含无法解析的引用:'net.tcp:// localhost:8010/WCFService.Service1 /'。::无法连接到net.tcp:// localhost:8010/WCFService.Service1 /“ – Bravo

+0

好吧,你应该在那里,你得到的错误似乎是因为连接字符串。请粘贴连接字符串,以便我们可以查看它 –

0

Windows服务通常以“本地系统”或“网络系统”的标识运行。 如果您的数据库连接使用Windows集成安全性,则会发现它无法连接到数据库。

快速解决方法是在有权访问数据库的工作组/域上以命名用户身份运行您的服务。

+0

感谢您的回答,但我没有使用集成安全数据库连接。我已经提供了连接字符串与服务器,数据库,用户名,密码。 – Bravo

相关问题