我一整天都在苦苦挣扎。
我无法让我的WebApi访问我的数据库。 我在实体框架中使用Code First方法。
当我部署时,会在web.config中添加一个新的连接字符串。 这提出了一个例外:
这是我在web.config(本地)中获得的:
<connectionStrings>
<add name="ArquitecturaNativaDB" connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=ArquitecturaNativaDB;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
</connectionStrings>
这就是我在部署时所做的事情: 显然,部署时应该使用连接字符串。
我曾经认为,在部署应用程序时,我的web.config已被修改,我在本地使用的连接字符串将替换为图像文本框中的那个。
但不,相反,我在我的服务器中得到了这个:
<connectionStrings>
<add name="ArquitecturaNativaDB" connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=ArquitecturaNativaDB;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
<add name="ArquitecturaNativaDB_DatabasePublish" connectionString="Data Source=mydbserver;Initial Catalog=mydb;Integrated Security=False;User ID=myuserid;Password=mypassword" providerName="System.Data.SqlClient" />
</connectionStrings>
ArquitecturaNativaDB_DatabasePublish
在那里做什么?
我相信这是我问题的根源,因为当我提出请求时,我得到一个异常响应:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible.
这是我的DbContext的构造函数:
public ApplicationDbContext()
: base("name=ArquitecturaNativaDB", throwIfV1Schema: false)
{
Configuration.ProxyCreationEnabled = true;
Configuration.LazyLoadingEnabled = true;
}
我已经厌倦了尝试解决这个问题。 任何一只手?
答案 0 :(得分:0)
您可以尝试使用web.config转换,而不是使用Web部署设置。
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="MyDB"
connectionString="ReleaseSQLServer"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
</configuration>
它的解决方法比修复更多,但它应该有效。
答案 1 :(得分:0)
如果要确保所需的连接字符串是正在使用的连接字符串,请在Azure门户中的Web App的应用程序设置刀片上指定连接字符串。向下滚动到Connection Strings部分,并在那里指定您的连接字符串。此处指定的内容优先于web.config文件中的任何内容。走这条路线也意味着如果你确实发布了错误的配置(使用调试配置而不是发布配置或你为web.config转换定义的任何其他配置),你仍然会使用正确的连接字符串。