Asp.net

在 Azure Web App 中設置 EF 連接字元串

  • June 30, 2015

我們有一個 ASP .NET (MVC) 應用程序,並且正在使用 Entity Framework 6 連接到我們的數據庫。DbContext 以標準方式建構,它代表我們載入連接字元串。生成的程式碼如下所示:

public partial class MyContext : DbContext
{
   public MyContext(string connectionName)
       : base("name=" + connectionName)
   {
   }
}

我們也以標準方式在本地 web.config 中設置連接字元串:

<configuration>
 <connectionStrings>
   <add name="DefaultConnection" 
        connectionString="metadata=...;provider connection string="..."" 
        providerName="System.Data.EntityClient" />

當我們將應用程序發佈到 Azure 時,我們導航到 Azure 門戶,然後導航到 Web 應用程序的設置,然後導航到連接字元串列表。在那裡,我們添加了我們在本地使用的 EF 連接字元串。當我們重新啟動並訪問應用程序時,我們會收到一個執行時錯誤,具體取決於我們選擇的連接字元串的類型。

對於一個Custom類型,我們得到以下執行時錯誤:

不支持關鍵字:“數據源”。

For SQL ServerorSQL Database我們得到以下執行時錯誤:

不支持關鍵字:“元數據”。

這看起來真的是一個簡單的故事,所以我們想知道出了什麼問題。

問題是轉義引號:".

web.config 中的連接字元串已轉義引號,因為它們在 XML 屬性中被序列化。在 Azure 門戶中輸入連接字元串時,應提供未轉義的原始字元串。像這樣的東西:

metadata=...;provider connection string="Data Source=..."

David Ebbo 的回答有助於確認環境已按您的預期設置。通過 Visual Studio 中的嚮導發佈時注意 .pubxml 文件也很有幫助:它也會嘗試填充連接字元串。

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