2017-03-08 64 views
0

我將API從免費計劃app service移至基本計劃app service並使用custom domainSSL certificate將Azure API應用程序移至自定義域後無法訪問Azure SQL數據庫

1)我看到我的API應用程序的狀態爲「正在運行」,驗證(AAD)工作正常

2)如果我打開它的API定義(即* /昂首闊步/文檔/ V1),這是工作

3)如果我嘗試不嘗試訪問後端Azure的SQL數據庫的請求,那麼它工作正常

4)如果我使用調用請求後端Azure的SQL數據庫(它移動API工作之前到自定義域)它失敗,出現此錯誤:

{"The underlying provider failed on Open., StackTrace: at System.Data.Entity.Core.EntityClient.EntityConnection.Open()\r\n at System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection(Boolean shouldMonitorTransactions)\r\n at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func 1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass65 1.b__63()\r\n at System.Data.Entity.Infrastructure.DbExecutionStrategy.Execute[TResult](Func 1 operation)\r\n at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryReliably[TElement](String commandText, String entitySetName, ExecutionOptions executionOptions, Object[] parameters)\r\n at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, ExecutionOptions executionOptions, Object[] parameters)\r\n at System.Data.Entity.Internal.InternalContext.<>c__DisplayClass14 1.b__13()\r\n at System.Data.Entity.Internal.LazyEnumerator 1.MoveNext()\r\n at System.Collections.Generic.List 1..ctor(IEnumerable 1 collection)\r\n at System.Linq.Enumerable.ToList[TSource](IEnumerable 1 source)\r\n
at P..Repositories.DataAccessLayer.DbContexts.P..DbContext.GetP..Dtos()\r\n at P..Repositories.Repositories.P..Repository.P..Repository..ctor()\r\n at P..API.Controllers.A..Controller.Get()"}]}

迄今爲止我發現的唯一一件事表明,由於防火牆規則,我的API無法訪問Azure SQL,但這聽起來不是一個選項,因爲我只是將自定義域分配給我的應用程序,我相信它是在Azure中的同一個「地方」......我沒有管理到目前爲止找到任何關於將API遷移到自定義域時有關Azure SQL db連接的建議...

任何想法?

回答

0

事實證明,通過一些奇怪的原因,移動到自定義域後 - 發佈設置,AzureDatabase連接字符串有一個不存在的(如「生成」的名字縫 - > API名稱與添加的後綴_db)數據庫名。當我將其更改爲真實的db名稱時,所有內容都開始重新生效......

P.S.我想取消選中「在運行時使用此連接字符串(更新目標web.config)」會得到相同的結果,因爲web.config保持正確的連接字符串。

enter image description here

相關問題