我有一个简单的ASP Web API 2应用程序,它部署到Azure Web App。它使用的是也在Azure上托管的SQL数据库。使用“发布”对话框设置DbContext
,如下图所示,所以我相信VS工具,我假设连接字符串设置正确:(可以找到示例here)< / p>
连接字符串在Web.config
上设置<connectionStrings>
<add name="DefaultConnection"
connectionString="..."
providerName="System.Data.SqlClient"/>
</connectionStrings>
并在ctor
的{{1}}中使用:
IdentityDbContext
当API项目在本地调试时,它可以毫无问题地访问生产数据库,但一旦部署它就不能再访问它了。以下是例外情况(寄回邮递员)。关于类似的问题还有其他一些答案,但到目前为止我还没有成功地跟进它们。
public ApplicationDbContext() : base("DefaultConnection")
答案 0 :(得分:1)
转到http://myWebApp.scm.azurewebsites.net并选择调试控制台&gt;的 PowerShell的即可。然后运行它以查看您的LIVE连接字符串。
cd site/wwwroot
$xml = [xml](Get-Content Web.config)
$connStrings = $xml.SelectSingleNode("configuration/connectionStrings")
$connStrings.InnerXml
转到http://portal.azure.com,打开数据库服务器(浏览所有&gt; Sql server &gt; myServer ),然后选择设置即可。在防火墙下,确保允许访问Azure服务 开启。
您也可以从Azure PowerShell执行此操作:
Get-AzureAccount # sign-in to your account
Get-AzureResource -ResourceGroupName mvp2015 `
-ResourceName mvp2015 `
-ResourceType Microsoft.Sql/servers/firewallrules `
-OutputObjectFormat New
如果您看到名为AllowAllWindowsAzureIps
的规则,那么您已经正确配置。
您可能会覆盖Web App配置中的Web.config。
您可以访问portal.azure.com&gt;浏览全部&gt; MyAppName&gt;设置&gt;应用程序设置&gt;连接字符串。如果你有一个名为DefaultConnection
的名称,它将覆盖Web.config连接字符串。
您也可以访问myappname.scm.azurewebsites.net&gt;环境&gt;连接字符串。确保那里列出的DefaultConnection
(如果有的话)是你想要的。