2016-08-02 31 views
0

我的解決方案有三個項目:
enter image description here名爲XXX」沒有連接字符串可能會在應用程序配置文件中找到

  • DLL庫,已經在EDMX EF核心作爲DAL爲Oracle數據庫
  • 圖書館業務邏輯,參考上述dll
  • ASP.NET核心webservice應用程序,引用業務邏輯的dll

所有這三個目標在同一版本的.NET框架:4.6.1

爲了讓web服務工作,並訪問我不得不從的EntityFramework項目App.config文件複製到web服務項目中的數據庫。

一切工作正常,直到我決定從ASP.NET 5 RC1遷移到ASP.NET Core 1.0。

遷移後web.config出現在webservice項目的根目錄下(除了在wwwroot文件夾下的目錄之外),我遇到了錯誤提到here顯然是因爲現在我有兩個配置文件(app.config和web.config),刪除app.config的解決方案很有意義。

因此,我將app.config中的所有部分複製到了web.config中,並刪除了app.config,它解決了我的第一個問題,但現在每當我嘗試使用DBContext時,我都會遇到此異常:

類型的異常「System.InvalidOperationException」發生在 EntityFramework.dll但在用戶代碼中沒有處理

其它信息:沒有命名 「DBEntities」連接字符串可以在應用程序中找到配置文件。

我注意到,在發佈應用程序之後,文件myApp.exe.config不再有連接字符串。我的問題很簡單,我如何讓應用程序在web.config中查找連接字符串?

我發現了一些模擬問題,如this one,thatthat 但他們都沒有答案我的問題。

+0

Webservice的意思是SOAP/WCF? ASP.NET Core iirc不支持這種情況。只有Rest(WebApi),MVC和SignalR(仍處於早期測試階段)在ASP.NET Core – Tseng

+0

@Tseng上受支持VS2015中沒有WebAPI項目類型。 MVC中不是所有的WebAPI? – Gubr

+1

它們都在同一個包中,並且支持開箱即用。儘管如此,WebApi和MVC在用法上略有差異:WebApi路由通常沒有動作並且與http動詞一起工作,並且在WebApi中返回的「IActionResult」類型不同。儘管如此,你使用哪種技術作爲「Web服務」。 Web服務通常是指WCF/Soap,這就是爲什麼我問,因爲它不支持在ASP.NET核心項目 – Tseng

回答

2

我一直有完全相同的問題進行定義,答案是它的BUGGY!就我而言,我的DbContext子期待在app.config中的連接字符串,那麼這是你必須提供下<configuration>

<connectionStrings> 
    <add name="NameOfMyContext" connectionString="RemovedForSecurity" providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

現在,建造和運行項目。進入/ bin/Debug /文件夾,直到找到yourappname.exe和yourappname.exe.config文件。檢查yourappname.exe.config文件。這是來自您的項目的各種xml配置文件的奇怪混合。確保你的連接字符串在那裏。

我對該文件的使用體驗非常糟糕。做一個「乾淨的」不會刪除它,所以你可以在你刪除項目中所有對連接字符串的引用的情況下(即從app.config中刪除它),並且你的應用程序仍然工作,因爲字符串保持在奇怪的.exe.config文件。

+0

這是我可以工作的唯一方式; / – Chris

1

連接字符串必須appsettings.json

{ 
    "ConnectionStrings": { 
    "DefaultConnection": "< connection string value here >" 
    }, 

.. other stuff here 
} 

更多的https://docs.asp.net/en/latest/fundamentals/configuration.html

+0

我以前試過,它不工作。我有兩個連接字符串,我使用ReadOnly複製數據庫進行查詢以提高性能,並根據需要進行數據操作來決定創建Context。 – Gubr

+0

連接字符串的名稱被傳遞給DBContext的構造函數 – Gubr

1

如果您有多個解決方案,請使用web.config文件將解決方案設置爲啓動項目。

0

另一種情況是,您收到該異常時,您已將連接字符串寫入到MVC項目的web.config中的<clear>標記之後。

相關問題