![](/img/trans.png)
[英]ASP.NET application is reachable as localhost but not 127.0.0.1
[英]SQL Server not reachable from ASP.NET application
我有一个ASP.NET页,该页的格式很小,可以处理其课程的注册。
显然,此表单中的数据必须插入数据库中。
我的问题在于与数据库服务器的实际连接,出于测试目的,我将其连接到本地PC上。
我可以通过SQL Server Management Studio很好地连接到服务器,但是,当我尝试从Web应用程序进行连接(纯粹将其上传到免费主机进行测试)时,却出现以下错误:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 验证实例名称正确,并且已将SQL Server配置为允许远程连接。 (提供者:TCP提供程序,错误:0-尝试以其访问权限禁止的方式访问套接字。)
经过广泛的Google搜索并在我的web.config
文件中重写了连接字符串之后,我仍然找不到确切的问题所在。
我知道我正在使用的DNS可以正常工作,因为我的一个朋友几天前已经通过其自己的SQL Server Management Studio连接进行了测试。
这是我的web.config
:(很明显,空白处的密码是空白的)
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5"/>
<httpRuntime targetFramework="4.5"/>
<customErrors mode="Off"/>
</system.web>
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
<connectionStrings>
<add name="SQLCS"
providerName="System.Data.SqlClient"
connectionString="Server=ydekempe.ddns.net,5555\Cocktails;Database=Website;Integrated Security=False;User ID=WebUser;Password=********;"/>
</connectionStrings>
</configuration>
只是为了完整地为您提供可能需要的一切,以下是实际连接的代码:
protected void Inschrijven(object sender, EventArgs e)
{
int uid = 0;
string conStr = ConfigurationManager.ConnectionStrings["SQLCS"].ConnectionString;
try
{
using (SqlConnection conn = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand("Inschrijven", conn))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@naam", txtNaam.Text.Trim());
cmd.Parameters.AddWithValue("@voornaam", txtVoorNaam.Text.Trim());
cmd.Parameters.AddWithValue("@Email", txtEmail.Text.Trim());
cmd.Connection = conn;
conn.Open();
uid = Convert.ToInt32(cmd.ExecuteScalar());
conn.Close();
}
}
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
string msg = "";
switch (uid)
{
case 0:
msg = "Er ging iets mis.\\nProbeer later opnieuw";
break;
case -1:
msg = "Dit e-mail adres is al in gebruik.";
break;
default:
msg = "Inschrijving verwerkt.";
break;
}
ClientScript.RegisterStartupScript(GetType(), "Boodschap", "Boodschap: '" + msg + "');", true);
}
PS:实际的连接信息是IP:ydekempe.ddns.net和端口:5555以防万一您想知道。
数据库服务器是您的本地服务器,Web服务器托管在哪里? 您提到这是一个免费主机,我想它不在您的本地计算机上。 确保可以从托管Web应用程序的任何位置访问您的计算机。 例如,如果它在AWS中,则必须验证入站和出站规则。
原来,这是Web主机阻止传出端口。
来自SmarterASP的技术支持的回复 :
尊敬的客户,
抱歉,由于性能原因,我们不允许客户连接到远程数据库服务器。 我们建议您仅备份数据库并将其还原到我们的服务器以测试您的应用程序。 使用这种方法,您将看到更快的性能和可靠性。
但是,如果必须连接到远程数据库服务器,请考虑升级到我们的高级计划或Semi Dedi计划。 升级到这些托管计划后,可以在控制面板->安全管理器->传出端口管理器中启用所需的任何端口。
不用担心,我们为所有计划提供60天全额退款。
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.