2016-03-06 92 views
1

我將一個webapi項目部署到Azure,通過DbContext連接到數據庫。一切工作在本地,但是當我部署時,我碰到一個錯誤,只要我提出需要訪問我的DbContext的請求。數據庫第一個DBContext在本地工作,但在部署時不工作

我打開一個連接如下:

public ProductRepo(ProdStoreEntities context) 
     { 
      dbContext = context; 
      dbContext.Database.Connection.Open(); 
     } 

我的web.config如下:

<connectionStrings> 
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-CatalogAPI-20160227031830.mdf;Initial Catalog=aspnet-CatalogAPI-20160227031830;Integrated Security=True" providerName="System.Data.SqlClient" /> 
    <add name="ProdStoreEntities" connectionString="metadata=res://*/DbCache.csdl|res://*/DbCache.ssdl|res://*/DbCache.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;initial catalog=ProdStore;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

我本來以爲一切都會對我來說,因爲我使用的DbContext處理但是當我部署並試圖發出需要數據庫查詢的get請求時,我收到以下錯誤:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

關於爲什麼會發生這種情況的任何想法?發佈時我沒有做任何特別的事情,我從字面上點擊右鍵菜單並點擊發布。如果重要的話,我首先通過數據庫優先方法生成DbContext。

回答

2

這可能來自一些事情。

檢查所部署的服務器上運行的LocalDB

其次,檢查數據庫已經intialized部署的服務器上。

第三,你能夠通過您所提供的憑證通過管理工作室登錄數據庫 - 確保您的用戶資料已部署的服務器上的權限來訪問數據庫

+0

我使用Windows身份驗證在本地登錄數據庫。但我不希望我部署的Web服務訪問我的本地數據庫。我希望將我的數據庫的副本發佈到我的web api項目的一側。我以爲這是自動的,因爲我使用DbContext?我的假設是否不正確? – Programmer

+0

DbContext將負責數據庫設置,但它首先需要能夠連接到可以創建數據庫的地方。正如下面的Chimera指出的那樣,連接字符串指向本地數據庫。你需要指定一個連接字符串到你的已部署數據庫的託管位置,然後創建一個空的數據庫或使用遷移等。當你的DbContext將負責其他的事情。 – Oliver

+0

因此,我在azure上創建一個空數據庫,獲取它的連接字符串並在發佈時將其放入設置選項卡中?然後,我的DbContext會創建我的本地數據庫的一個副本,並將其置於天藍色的環境中?或者我將不得不手動配置Azure數據庫以匹配我的本地數據庫? – Programmer

0

你的問題是,你的連接字符串表示它是一個本地數據庫。 你需要做的是在Azure中創建一個數據庫,當你這樣做時,你實際上可以看到一個到該數據庫的連接字符串,該連接字符串需要替換你當前的連接字符串,你有你的(本地)分區

相關問題