2

我有一个作为共享帐户托管的 ASP.Net 站点。我收到错误消息:

A connection was successfully established with the server, but then an error 
occurred during the pre-login handshake. (provider: SSL Provider, error: 0 - 
The specified data could not be decrypted.

我在网上找到的信息似乎表明问题是 SQL Server 不信任证书(SSL 证书是由威瑞信和托管服务签署的有效证书,而不是自签名的)。但是,托管服务告诉我:

  1. SQL Server 必须设置为“强制协议加密”,因为它是共享服务器

  2. 他们无法导入证书或进行任何更改,也不允许我为此做任何事情

还有其他解决方案吗?这是我的代码有问题吗?我尝试从 bin 文件夹和 web.config 中删除我的 DLL,并创建一个直接连接到数据库的 aspx 页面,但我仍然遇到同样的错误!

有可能解决这个问题吗?是我的代码以某种方式导致了这种情况吗?

编辑:我改为在连接字符串中使用 ip 地址,它暂时重新开始工作,但现在它再次给我错误。我不确定为什么它偶尔会再次开始工作,然后突然停止工作。有人知道吗?

(代码在我本地托管的开发服务器上完美运行)

网页

<%@ Page language="c#" %>
<%@ Import namespace="System" %>
<%@ Import namespace="System.Web" %>
<%@ Import namespace="System.Data" %>
<%@ Import namespace="System.Data.SqlClient" %>
<script runat="server">

protected void Page_Load(object sender, EventArgs e)
{
    try
    {
        //Now insert into database
        SqlConnection conn = new SqlConnection( ConfigurationManager.AppSettings["ConnectionString"]  );

        conn.Open();
        SqlCommand cmd = new SqlCommand(  );
        cmd.Connection = conn;
        cmd.CommandText = "SELECT * FROM TestTable";
        cmd.ExecuteReader();
        Response.Write( "done" );
    }
    catch (Exception sqlEx)
    {
        Response.Write( sqlEx.ToString() );
    }
}
</script>

网页配置

<?xml version="1.0"?>
<configuration>
    <system.web>

        <customErrors mode="Off"/>
    </system.web>
    <appSettings>
        <add key="ConnectionString" value="server=mydb.thehostingservice.com;user=dbUser;initial catalog=test;pwd=dbpass" ></add>
    </appSettings>
</configuration>
4

2 回答 2

1

我不知道这是否是一个好的永久修复,但我最终能够通过使用数据库的 IP 地址和连接字符串中的端口而不是数据库的“web”地址来连接它。所以我用“192.168.1.213,1433”替换了“mydb.thehostingservice.com”。

在此之后,它能够连接。

但是让我怀疑这是一个永久的解决方案是,在此之后我切换回在连接字符串中使用“mydb.thehostingservice.com”来查看 ti 是否会中断,现在也可以了!所以这可能会在未来再次对我造成影响。

以前我收到了错误,但我删除了我的 web.config 和 dll 并暂时修复了它 - 但最近一次删除这些东西并没有修复它 - 所以我担心这是一样的。

编辑:它再次给了我错误。那不是解决方案。我不确定为什么它偶尔会再次开始工作,然后突然停止工作。有人知道吗?

于 2013-02-06T06:28:21.190 回答
0

我在互联网上阅读此问题的先前帖子和解决方案是,问题可能出在您的客户端而不是他们的服务器上。尝试解决此问题的第一步是将以下内容添加到您的连接字符串中:

;Use Encryption for Data=True

然后查看是否可以解决问题,或者是否会更改错误消息。


好的,我注意到的一件事是..;user=..您的连接字符串中有。尝试将“user=”更改为“user id=”。


在这一点上,我只能想到另一件事:在您的客户端上调出 SQL 配置实用程序,然后右键单击 SQL Native Client 协议并选择“属性”。然后注意“Force [Protocol] Encryption”设置的内容,然后将其反转。现在重新启动一切并尝试再次连接。

于 2013-02-06T15:55:07.080 回答