2017-03-08 94 views
0

我有一個C#.NET 的Web API部署到Azure的應用服務,我也有一個Azure的SQL數據庫Azure的應用程序到Azure數據庫「連接失敗」與實體框架

在API中,我使用實體框架插入數據庫,但我不斷收到錯誤消息:「底層提供程序在打開時失敗」。

(當在本地運行API(在調試模式下)連接到本地數據庫時,它工作正常)。 這可能是Azure數據庫的權限/防火牆配置問題,還是其他?

我在「Azure集服務器防火牆」中添加了當前的IP地址,是否需要將Azure Web API的IP地址添加到數據庫防火牆設置?

這是我的API:

public class ProfileController : ApiController 
{ 
    [EnableCors(origins: "*", headers: "*", methods: "*")] 
    [WebMethod] 
    [HttpPost] 
    public HttpResponseMessage PostProfile([FromBody] Profile details) 
    { 
     var context = new XXXDBEntities(); 
     var query = from c in context.Users 
        where c.Email.Equals(details.email, StringComparison.CurrentCultureIgnoreCase) 
        select c; 
     var emailFound = query.Count(); 


     if (emailFound != 0) 
     { 
      return Request.CreateResponse(HttpStatusCode.OK, "There is already an account associated with this email address"); 
     } 
     else 
     { 
      Guid token = Guid.NewGuid(); 
      Users newRow = new Users(); 
      newRow.Token = token; 
      newRow.FirstName = details.firstName; 
      newRow.LastName = details.lastName; 
      newRow.Email = details.email; 
      newRow.Password = details.password; 
      context.Users.Add(newRow); 
      context.SaveChanges(); 
      return Request.CreateResponse(HttpStatusCode.OK, token); 
     } 

    } 

這是我的連接字符串: 這是在.net實體框架的連接字符串的默認格式,我只加了用戶名,密碼和更改的數據源和目錄字段。它是否正確?

<add name="XXXDBEntities" connectionString="metadata=res://*/XXXDB.csdl|res://*/XXXDB.ssdl|res://*/XXXDB.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=tcp:XXX.database.windows.net,1433;initial catalog=XXXDB;integrated security=True;User ID=XXXXX;Password=XXXXX;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
+0

您能夠在本地運行,但仍能成功連接到您的Azure SQL實例嗎? –

+1

當您指定用戶名和密碼時,爲什麼在連接字符串中有'integrated security = True'? – juunas

+0

謝謝!我刪除了「集成安全性=真」,並添加了「堅持安全信息=真」。它現在連接成功:) – Tess

回答

0

我檢查了您的連接字符串,它似乎是正確的。所以我認爲你的問題可能是由SQL Azure的模型引起的,但是你的項目不會更新它。下面是我在我身邊再現了同樣的問題:

enter image description here

我建議你更新你的模型。

是否需要將Azure Web API的IP地址添加到數據庫防火牆設置?

我們可以設置允許在SQL Azure中的防火牆設置訪問Azure的服務ON。所以我們不需要添加Azure Web API的地址。

enter image description here

+0

是的,我已經設置它爲真,謝謝。它正在改變連接字符串,這解決了我的問題。 – Tess

0

你需要從連接字符串中刪除Integrated Security=True因爲你指定一個用戶名和密碼。

相關問題