2017-03-16 52 views
10

我創建了一個帶有用戶身份驗證的簡單ASP.Net核心應用程序(因此所有實體框架都已預先加載到Web應用程序模板中)。它連接到我的數據庫,其中connectionString位於我的appsettings.json文件中,其中"data source = {computerName}\\{serverName}"設置。ASP.NET核心 - 應用程序未發佈後連接到數據庫

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

錯誤。
處理您的請求時發生錯誤。 開發模式 交換到開發環境將顯示有關發生錯誤的更詳細信息。

開發環境不應在已部署的 應用程序中啓用,因爲它可能會導致從最終用戶向 例外顯示敏感信息。對於本地調試, 開發環境可以通過將 ASPNETCORE_ENVIRONMENT環境變量設置爲開發, 重新啓動應用程序來啓用。

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

我試圖在我的project.json文件中添加appsettings.Production.jsonpublishOptions,即使沒有文件appsettings.Production.json,而這並沒有幫助。 dotnet publish

添加在web.config文件中的環境現狀變量沒有工作Deployment

我需要幫助獲得發佈的Web API來開發Visual Studio安裝外部連接到我的SQL Server數據庫。

我能想到的最後一件事就是我可能對連接字符串的理解不正確。如果web api使用連接字符串從服務器端連接到數據庫,那麼它應該像在開發中調用http://localhost:port#時那樣工作得很好,因爲它全部在同一臺機器上。但是,如果數據庫字符串需要基於客戶端調用,則必須使用域名和IP地址。 有人能告訴我它是哪一個嗎?

唯一讓我想到的是我有一件事我沒有做,並且需要在IIS管理器中做。我也看到了連接字符串,但是由於連接字符串在應用程序中,所以我們不確定這是什麼。也許我應該給應用程序某種授權與數據庫服務器通信,即使它們在同一臺計算機上?

回答

7

經過大量研究,終於在Google上搜索到「如何在iis中部署web api」,我從Host ASP.NET Web API in IIS using Visual Studio Publish得知我需要添加安全實體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被添加到您的數據庫服務器 - >安全 - >登錄。

+0

感謝您分享您的解決方案。它幫助了我。我所要做的只是將BUILTIN \ IIS_IUSRS添加到具有讀/寫權限的Db登錄名中。 – nam

相關問題