我在ASP.net/SQL Server中遇到了一个奇怪的问题,实在无法找出问题所在。我有一个AutoCompleteExtender,可以从Web服务中找出预测结果。在我被迫改变为Web服务提供服务的SQL Server 2008数据库的排序规则之前,它一直使用英语和非英语字符。
除了从Nvarchar更改为Varchar的此数据库和列类型的排序规则外,没有任何更改。 SQL Server在执行查询时显示正确的结果,但是:
问题是,当在autocompleteextender文本框中输入英语时,它会立即响应,但是当我在那里输入非英语单词时,我应该按BACKSPACE键删除最后一个字符以便它响应。我的数据库排序规则是SQL_Latin1_General_CP1256_CI_AS。
我无法理解为什么在输入非英文字符时会出现这种奇怪的行为。
这是附加到我的ajax autocompleteextender的Web服务代码:
[WebMethod(EnableSession = true)]
[System.Web.Script.Services.ScriptMethod]
public string[] GetCompletionListByVT(string prefixText, int count)
{
List<string> returnData = new List<string>();
try
{
string connStr = ConfigurationManager.ConnectionStrings["CS"].ConnectionString;
SqlConnection objconnection = new SqlConnection(@connStr);
string strsql = "SELECT TOP 10 CompanyName FROM ViewAutoCompleteWSFeed WHERE (CompanyName LIKE '%" + prefixText+"" + "%');";
objconnection.Open();
// strsql = "SELECT TOP 10 CompanyName FROM ViewAutoCompleteWSFeed WHERE (CompanyName LIKE '%" + prefixText + "%' OR Business_Landline_Phone_1 LIKE '%" + prefixText + "%' OR Business_Landline_Phone_2 LIKE '%" + prefixText + "%' OR MobileNumb1 LIKE '%" + prefixText + "%' OR MobileNumb2 LIKE '%" + prefixText + "%' OR EmailAddress LIKE '%" + prefixText + "%' OR Business_Address LIKE '%" + prefixText + "%' OR htCompanySN LIKE '%" + prefixText + "%' OR htCompanyNo LIKE '%" + prefixText + "%' OR Notes LIKE '%" + prefixText + "%');";
SqlCommand objcommand = new SqlCommand(strsql, objconnection);
SqlDataReader dr = objcommand.ExecuteReader();
while (dr.Read())
{
returnData.Add(dr["CompanyName"].ToString());
}
objconnection.Close();
return returnData.ToArray();
}
catch (Exception ex)
{
returnData.Add(prefixText);
}
return returnData.ToArray();
}
答案 0 :(得分:0)
解决方案是在Windows文件夹的.net framework文件夹下删除网站的临时文件夹。 下次编译和构建网站时,问题就会消失。