我正在使用 c# 和 monotouch 开发一个 iphone 项目。我需要使用 SQL Azure 数据库。我的问题是我似乎无法使用单点触控连接。我可以使下面的代码在使用 Visual Studio 2012 构建在 Windows 8 机器上的本机控制台应用程序中正常工作。但是,当我尝试将其移植到 imac 并使用 monodevelop/monotouch 时,我的 iphone 应用程序崩溃了。我得到的错误是:
System.NotImplementedException:未实现客户端和服务器之间发送的数据的 SSL 加密。
我用谷歌搜索了一下,发现了一个错误报告,似乎在这里描述了我的确切问题。我注意到它已经快两年了,所以我不确定这是否仍然没有实现。
因此,我尝试更改 StringBuilder.Encrypt = true; 的值 为假。但是,它仍然崩溃,我得到了错误:
Mono.Data.Tds.Protocol.TdsInternalException:服务器关闭了连接。---> System.IO.IOException:连接丢失
无论哪种情况,应用程序都会在 conn.Open(); 时崩溃;叫做。
我很困惑,我别无选择,只能使用 SQL Azure。因此,如果有人可以为我的问题提出解决方案或解决方法,我将不胜感激。提前致谢!
string userName = "<username>@<myservername>";
string password = "<password>";
string dataSource = "<myservername>.database.windows.net";
string databaseName = "<dbname>";
SqlConnectionStringBuilder connStringBuilder;
connStringBuilder = new SqlConnectionStringBuilder();
connStringBuilder.DataSource = dataSource;
connStringBuilder.InitialCatalog = databaseName;
connStringBuilder.Encrypt = true;
connStringBuilder.TrustServerCertificate = false;
connStringBuilder.UserID = userName;
connStringBuilder.Password = password;
using (SqlConnection conn = new SqlConnection (connStringBuilder.ToString())) {
conn.Open();
using (IDbCommand dbcmd = conn.CreateCommand()){
string sql = "Select client_username from dbo.client;";
dbcmd.CommandText = sql;
using (IDataReader reader = dbcmd.ExecuteReader()){
while( reader.Read() ){
string username = (string) reader["client_username"];
}
}
}
}