Asp.net
在 Azure Web App 中設置 EF 連接字元串
我們有一個 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 文件也很有幫助:它也會嘗試填充連接字元串。