8

我在 azurewebsites 上有一个简单的 mvc 网站(使用 VS Internet 模板),与同一数据中心的 SQL Azure 数据库通信。这个时候的数据库只是做内置的SimpleMembership Provider。我已经从默认的 App_Data mdf 文件切换到 Azure SQL。它工作正常,但有时会在一段时间后给出:

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

有一条长消息:

SQLExpress 数据库文件自动创建错误:

连接字符串使用应用程序 App_Data 目录中的数据库位置指定本地 Sql Server Express 实例。提供者试图自动创建应用程序服务数据库,因为提供者确定该数据库不存在。成功检查应用程序服务数据库是否存在并自动创建应用程序服务数据库需要以下配置要求:

但是我没有使用 SQL Server Express 的连接字符串!

立即重新启动网站不会消除错误。

无需更改任何内容并在 15 分钟后重新启动网站:

502 - Web 服务器在充当网关或代理服务器时收到无效响应。

您要查找的页面有问题,无法显示。当 Web 服务器(作为网关或代理)联系上游内容服务器时,它收到了来自内容服务器的无效响应。

以前,我可以通过从 VS 重新发布来将网站恢复到工作状态。但是在过去的一个小时里,我尝试了再尝试,但我无法让网站再次运行。

SQL Server Express 的真正问题是什么?

我的连接字符串部分包含:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Server=tcp:sabl6h4---.database.windows.net,1433;Database=MVC;User ID=test@sabl6h4---;Password=----;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" providerName="System.Data.SqlClient" />
  <add name="Entities" connectionString="metadata=res://*/Data.Model1.csdl|res://*/Data.Model1.ssdl|res://*/Data.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=sabl6h4---.database.windows.net;initial catalog=MVC;user id=test;password=----;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
 </connectionStrings>

可以肯定的是,我将 sabl6h4---.database.windows.net 复制并粘贴到 SSMS 中并使用登录测试连接,它打开了数据库没有问题。


一天后:我创建了一个新的 azurewebsite 并发布了完全相同的项目和相同的 web.config。它工作正常,没有问题。几分钟后,发生了完全相同的错误!


三个多小时后:去吃午饭,回来,点击浏览器刷新按钮,网站又重新启动了。我确信有人在玩弄后端的设置。

4

2 回答 2

4

添加一个<clear/>元素作为 connectionstrings 元素下的第一个元素,以确保没有字符串被继承。另外,我假设您的 Azure SQL DB 设置了适当的防火墙设置,允许您的 IP 部署 ASP.net 代码?

于 2013-10-13T18:35:46.280 回答
1

我也有这个错误。但就我而言,我没有注意到连接字符串被发布向导覆盖。我通过转到发布向导中的设置选项卡并取消选中“在运行时使用此连接字符串(更新目标 web.config)”解决了这个问题

于 2015-11-11T15:40:23.180 回答