我使用 mssql 数据库在 ASP.NET MVC4 上构建了我的网站,并将其部署到我的本地 IIS 7 服务器上并且运行良好,但是当我在虚拟服务器 hostgator.com 上执行完全相同的操作时,它会抛出这个错误。
并尝试了 1000 个连接字符串,但仍然没有成功。
这很奇怪,因为我在本地机器上执行了完全相同的程序,但仍然无法连接到服务器。
我已经解决这个问题 24 个小时了,但我找不到这个问题的解决方案。
我已经联系了技术支持,他们说这超出了他们的支持范围,他们无法帮助我。
我已尽一切努力使该错误消失,因为我在本地机器上遇到了同样的错误,但是当我正确配置它时,它就可以正常工作,但在虚拟服务器上却不行。
- 防火墙已关闭
- sql 配置中启用了远程连接
- 应用程序池设置为网络服务
- 我已在管理工作室中添加网络服务作为新的登录名,可以访问数据库
错误
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供程序:SQL 网络接口,错误:26 - 定位指定的服务器/实例时出错)
答案1
所以基本上问题不在于 web.config 内的连接字符串,而是实体框架的问题。
我们开始在 localhost 上开发我们的项目,完成后我们在 hostgator.com 上部署了网站,问题是,entityframework 控制了所有的连接字符串,因此在 web.config 中更改任何内容都是没有用的。
这是我们找到解决方案的地址:http://msdn.microsoft.com/en-us/library/bb739017.aspx
解决方案如下:
namespace Finance.Models
{
// This constructor is the solution
public class FinanceDataContext : DbContext
{
public FinanceDataContext()
{
this.Database.Connection.ConnectionString = "Data Source=servername;Initial Catalog=databasename;User ID=sql_username;Password=**********";
}
public DbSet<Administrator> Administrators { get; set; }
public DbSet<News> News { get; set; }
public DbSet<User> Users { get; set; }
public DbSet<Plan> Plans { get; set; }
public DbSet<Withdraw> Withdraws { get; set; }
}
}
没有关于这方面的信息,我们纯属运气,偶然发现实体框架中的一些错误,30 分钟后我们发现实体框架正在控制与数据库的连接。
我百分之百确定有人会遇到同样的问题,所以如果你可以编辑这个问题,那么每个人都可以看到它。