我有一個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="data source=tcp:XXX.database.windows.net,1433;initial catalog=XXXDB;integrated security=True;User ID=XXXXX;Password=XXXXX;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
您能夠在本地運行,但仍能成功連接到您的Azure SQL實例嗎? –
當您指定用戶名和密碼時,爲什麼在連接字符串中有'integrated security = True'? – juunas
謝謝!我刪除了「集成安全性=真」,並添加了「堅持安全信息=真」。它現在連接成功:) – Tess