Asp.net

ASP.NET Core - 發布後應用程序未連接到數據庫

  • March 18, 2017

我創建了一個帶有使用者身份驗證的簡單 ASP.Net Core 應用程序(因此所有實體框架都已預載入到 Web 應用程序模板中)。connectionString它使用位於我的appsettings.json文件中的數據庫連接到我的數據庫"data source = {computerName}\\{serverName}"

數據庫實例和 Visual Studio 位於同一台機器上。在開發和調試模式下,這可以很好地將數據返回到 web api。當我發布它並嘗試從域名訪問該站點時,它確實允許我查看不需要數據庫連接但需要數據庫數據的其餘網頁返回如下頁面:

錯誤。

處理您的請求時發生錯誤。開發模式切換到開發環境將顯示有關所發生錯誤的更詳細資訊。

不應在已部署的應用程序中啟用開發環境,因為它可能導致向最終使用者顯示異常的敏感資訊。對於本地調試,可以通過將 ASPNETCORE_ENVIRONMENT 環境變數設置為 Development 並重新啟動應用程序來啟用開發環境。

我試圖將環境變數ASPNETCORE_ENVIRONMENT從開發更改為生產,但沒有成功。

即使沒有 file ,我也嘗試在我的文件中添加appsettings.Production.jsonto ,但這沒有幫助。點網發布publishOptions``project.json``appsettings.Production.json

在文件中添加環境變數web.config不起作用部署

我需要幫助獲取已發布的 Web api 以從開發 Visual Studio 設置之外連接到我的 SQL Server 數據庫。

我能想到的最後一件事是,我對連接字元串的理解可能不正確。如果 web api 使用連接字元串從伺服器端連接到數據庫,那麼它應該像在開發呼叫時一樣工作,http://localhost:port#因為它們都在同一台機器上。但是,如果數據庫字元串需要基於客戶端呼叫,那麼它必須包含域名和 IP 地址。誰能告訴我是哪一個?

唯一想到的其他事情是在 IIS 管理器中我沒有做,但需要做的事情。我在那裡也看到了連接字元串,但由於連接字元串在應用程序內部,因此不確定這對我們來說是什麼。另外,也許我想給應用程序某種授權以與數據庫伺服器進行通信,即使它們在同一台機器上???

經過大量研究,最後在Google上搜尋“如何在 iis 中部署 web api”我能夠使用 Visual Studio Publish 從 IIS 中的 Host ASP.NET Web API 中學習,我需要添加安全實體 BUILTIN\IIS_IUSRS。然後將映射放置到我的數據庫表並將數據庫的 db_datareader(可能還有 db_datawriter)提供給 IUSER,以允許從我的自託管 IIS Web api 進行訪問。這來自上面提到的連結,其中部分說明

在 IIS APPPOOL\ASP.NET v4.0 下訪問數據庫當我們使用 ASP.NET v4.0 應用程序池時,請確保將 IIS APPPOOL\ASP.NET v4.0 添加到您的數據庫伺服器 -> 安全 -> 登錄。

引用自:https://stackoverflow.com/questions/42865161