无法从ASP.NET应用程序访问SQL Server

时间:2015-04-27 17:08:48

标签: c# asp.net sql-server sockets

我有一个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 万一你想知道。

2 个答案:

答案 0 :(得分:2)

数据库服务器是您的本地服务器,Web服务器托管在哪里?你提到它是一个免费的主机,我猜它不在你的本地机器上。确保可以从托管Web应用程序的任何位置访问您的计算机。例如,如果它在AWS中,则必须同时验证入站和出站规则。

答案 1 :(得分:1)

事实证明,正是网络主机阻止了传出端口。

来自SmarterASP的技术支持人员的回复:

  

尊敬的客户,

     

抱歉,出于性能原因,我们不允许客户进行连接   到远程数据库服务器。我们建议您只需备份一下   数据库并将其还原到我们的服务器以测试您的应用程序你会   使用这种方法可以看到更快的性能和可靠性。

     

但是,如果您必须连接到远程数据库服务器,请   考虑升级到我们的高级计划或半Dedi计划。一旦您   升级到这些主机方案,您可以启用您想要的任何端口   您的控制面板 - &gt;安全管理器 - &gt;外派港务经理。

     

不用担心,我们为所有人提供60天的全额退款   计划。

     

谢谢。