【问题标题】:Connection String for Azure Web Job that updates an Azure Database connected with a WebAPI project用于更新与 WebAPI 项目连接的 Azure 数据库的 Azure Web 作业的连接字符串
【发布时间】:2016-03-07 15:04:24
【问题描述】:

我有一个正常运行的 web api 项目,使用以下连接字符串在 azure 中运行:

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-CatalogAPI-20160227031830.mdf;Initial Catalog=aspnet-CatalogAPI-20160227031830;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="ProdStoreEntities" connectionString="metadata=res://*/DbCache.csdl|res://*/DbCache.ssdl|res://*/DbCache.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;initial catalog=ProdStore;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

当我发布这个项目时,我在设置选项卡中使用了我的 Azure 数据库的连接字符串,如下所示。

Server=tcp:{name}.database.windows.net,1433;Database=ProductDatabase;User ID={user};Password={your_password_here};Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

这一切都很好。

然后,我通过在 Visual Studio 中右键单击我的 Web api 项目并选择“添加”->“新建 Azure Web 作业项目”来创建一个 Web 作业。

在我的 web 作业项目中,我对我的 web api 项目进行了解决方案引用,并编写了一些使用我的 web api 项目中的存储库的代码。

我将完全相同的连接字符串从我的 web api 项目添加到我的 web 作业项目中,并且在本地一切正常。但是,当我将整个内容发布到 Azure 时,我收到了这个错误。

未处理的异常:System.Data.SqlClient.SqlException:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)

我的问题是,我的 Azure Web Job 项目中需要什么类型的连接字符串?我假设它需要在某处引用 Azure 数据库,但是当我尝试时,我得到了这个错误。

System.Data.Entity.Infrastructure.UnintentionalCodeFirstException:上下文正在 Code First 模式下使用,代码是从 EDMX 文件生成的,用于 Database First 或 Model First 开发。这将无法正常工作。要解决此问题,请不要删除引发此异常的代码行。如果您希望使用 Database First 或 Model First,请确保 Entity Framework 连接字符串包含在启动项目的 app.config 或 web.config 中。如果要创建自己的 DbConnection,请确保它是 EntityConnection 而不是其他类型的 DbConnection,并且将其传递给采用 DbConnection 的基本 DbContext 构造函数之一。要了解有关 Code First、Database First 和 Model First 的更多信息,请参阅此处的实体框架文档:http://go.microsoft.com/fwlink/?LinkId=394715

【问题讨论】:

  • 您找到解决方案了吗?我也面临同样的问题。

标签: c# entity-framework azure connection-string azure-webjobs


【解决方案1】:

您连接的 SQL Server 实例需要允许同一订阅中的其他 Azure 服务。它不允许来自不同订阅的连接,只需转到 SQL Server 的配置并确保验证 IP 配置下的“Windows Azure 服务”设置为“是”。如果这仍然失败,您的连接字符串中可能有错误。

用户名通常是 user@servername 并且不要忘记密码:)

【讨论】:

  • 您好 Pedro,感谢您的回答,但 Windows Azure 服务已经启用。我已经尝试了所有合适的连接字符串,但没有运气,现在有点茫然。
  • 每当我在 Azure SQL 上工作时,我通常会在 Visual Studio 中打开“SQL 对象资源管理器”选项卡(使用 CTRL+Q 找到它),然后连接到 Azure 中的数据库。然后我右键单击数据库,然后选择“属性”,然后将整个连接字符串复制到我的配置中——这对我来说总是有效的。没有看你的代码,我不能更具体,抱歉
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
相关资源
最近更新 更多