我有一个ASP.NET页面,它有一个小表单来处理他的课程注册。
显然,必须将此表单中的数据插入到数据库中。
我的问题在于与数据库服务器的实际连接,我在本地PC上进行了测试。
我可以通过我的SQL Server Management Studio很好地连接到服务器,但是当我尝试从我的Web应用程序连接(将其上传到纯粹用于测试的免费主机)时,它给了我这个错误:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:TCP提供程序,错误:0 - 尝试以其访问权限禁止的方式访问套接字。)
在我的web.config
文件中广泛使用Google并重写连接字符串之后,我仍然无法找到确切的错误。
我知道我使用的DNS工作,我的朋友几天前已通过他自己的SQL Server Management Studio连接测试了它。
这是我的<?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>
:(显然是在constring中删除了密码)
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);
}
只是为了完整地提供您可能需要的一切,这里是实际连接的代码:
MEMORY_CACHEABLE :
{
BEGIN_MEMORY_CACHEABLE = .;
*(MEMORY_CACHEABLE)
END_MEMORY_CACHEABLE = .;
}
PS:实际的连接信息是IP:ydekempe.ddns.net&amp;港口:5555 万一你想知道。
答案 0 :(得分:2)
数据库服务器是您的本地服务器,Web服务器托管在哪里?你提到它是一个免费的主机,我猜它不在你的本地机器上。确保可以从托管Web应用程序的任何位置访问您的计算机。例如,如果它在AWS中,则必须同时验证入站和出站规则。
答案 1 :(得分:1)
事实证明,正是网络主机阻止了传出端口。
来自SmarterASP的技术支持人员的回复:
尊敬的客户,
抱歉,出于性能原因,我们不允许客户进行连接 到远程数据库服务器。我们建议您只需备份一下 数据库并将其还原到我们的服务器以测试您的应用程序你会 使用这种方法可以看到更快的性能和可靠性。
但是,如果您必须连接到远程数据库服务器,请 考虑升级到我们的高级计划或半Dedi计划。一旦您 升级到这些主机方案,您可以启用您想要的任何端口 您的控制面板 - &gt;安全管理器 - &gt;外派港务经理。
不用担心,我们为所有人提供60天的全额退款 计划。
谢谢。