将ASP.net部署到托管站点后无法连接到SQL Server

问题描述:

我正在开发一个ASP.net Web应用程序。 我的默认页面是一个简单的登录屏幕。 我正在使用Visual Studio开发应用程序。将ASP.net部署到托管站点后无法连接到SQL Server

它将使用Visual Studio运行,当数据输入到文本框并单击该按钮时,会将请求发送到我自己的运行带有SQL Server 2014的Windows Server 2012的服务器。 我还会提到,ASP应用程序正在作为Android应用程序的辅助应用程序创建。 Android应用程序通过Internet连接使用相同的数据库,所以我知道服务器和SQL服务器都可以接受读写调用。

我已经测试了ASP应用程序,使用WebClient调用连接到数据库的PHP文件(这适用于Android),并且OracleClient和SQLClient也将所有工作从Visual Studio的工作站调用到服务器计算机上。这些都可以很好地发送和接收数据库中的数据。

问题是一旦我将应用程序部署到我的托管站点,调用不再起作用。默认的登录页面打开,但尝试后登录我收到错误如下:

异常详细信息:System.ComponentModel.Win32Exception:无连接可以作出,因为目标机器积极地拒绝它

[Win32Exception( 0x80004005):因目标机器主动拒绝而无法建立连接]

[SqlException(0x80131904):建立与SQL Server的连接时发生网络相关或实例特定的错误。服务器未找到或无法访问。

任何人都可以帮助我吗?

+0

请您再次检查您的连接字符串吗?从错误消息中,它显示您的连接字符串不正确。 – 2016-07-18 03:30:37

+0

@DouglasThomas连接字符串很好。正如Matt Perrys写的,答案是我的托管软件包中的一个块,它不允许我连接到外部数据库。它现在一切正常。不管怎么说,还是要谢谢你。 –

+0

很高兴听到.... :) – 2016-07-19 03:43:18

这听起来像你的数据库正在接受来自某些客户端的连接,但不是你的托管服务器。我会尝试直接从托管服务器测试SQL连接,并查看测试连接是否可以成功。如果你能使它工作,它应该从Web服务器上运行。

这篇文章Quick ways to test OLE DB Connection String关于创建一个空的TestConnection.udl文件将会有所帮助。通过数据链接属性UI尝试不同的连接字符串设置会更容易。保存文件时,如果在文本编辑器中打开它(如果成功),则可以看到连接字符串。

如果连接字符串没有问题,请检查您是否没有防火墙阻止Windows 2012与SQL服务器之间的连接。它可以是任一台计算机上的寡妇防火墙,也可以是网络级别的其他防火墙。

+0

感谢@MattPerry的回复。我测试了多台机器的连接并使用数据链接属性。我也关闭了两台机器上的防火墙。事实证明,我的主机软件包不允许使用任何形式的外部数据库。因此,只有选择是将ASP托管在数据库服务器上或将数据库迁移到托管服务器。希望这对于解决这个问题的其他人有用 –