Asp Web Api部署了数据库连接

时间:2015-09-14 14:15:09

标签: c# sql-server azure asp.net-web-api asp.net-web-api2

我有一个简单的ASP Web API 2应用程序,它部署到Azure Web App。它使用的是也在Azure上托管的SQL数据库。使用“发布”对话框设置DbContext,如下图所示,所以我相信VS工具,我假设连接字符串设置正确:(可以找到示例here)< / p>

enter image description here

连接字符串在Web.config

上设置
<connectionStrings>
    <add name="DefaultConnection" 
         connectionString="..." 
         providerName="System.Data.SqlClient"/>
</connectionStrings>

并在ctor的{​​{1}}中使用:

IdentityDbContext

当API项目在本地调试时,它可以毫无问题地访问生产数据库,但一旦部署它就不能再访问它了。以下是例外情况(寄回邮递员)。关于类似的问题还有其他一些答案,但到目前为止我还没有成功地跟进它们。

public ApplicationDbContext() : base("DefaultConnection")

1 个答案:

答案 0 :(得分:1)

验证您的LIVE连接字符串是否正确

转到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服务 开启

A picture of the new azure portal Firewall settings area.

您也可以从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 App配置中的Web.config。

您可以访问portal.azure.com&gt;浏览全部&gt; MyAppName&gt;设置&gt;应用程序设置&gt;连接字符串。如果你有一个名为DefaultConnection的名称,它将覆盖Web.config连接字符串。

您也可以访问myappname.scm.azurewebsites.net&gt;环境&gt;连接字符串。确保那里列出的DefaultConnection(如果有的话)是你想要的。

Kudu Connection Strings