2011-08-23 70 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

相關問題