标签:
上周客户为了测试在他的笔记本上部署系统的时候报“用户 ‘NT AUTHORITY\ANONYMOUS LOGON‘ 登录失败”错误,上网搜了各种办法,均无法解决。重装了数据库,也没有用。
这周一(昨天)闲了一天,觉得那个问题不好解决,可能是客户电脑的问题,虽然我事不多,但不想为了这么个部署的问题浪费时间,说不定换台电脑就可以了。
今天(周二)上午验证了一下,发现连公司的数据库同样报错,想到和数据库无关。但还是找不出原因。没办法,只好重装系统、再重装数据库,然后重新部署,依然是那个问题。我一想,不是电脑问题,不是环境问题,可能就是程序问题了。然后调试程序,最后找到了原因。
之前的代码是这样的:
//本地连接本地数据库 string connStr1 = @"Data Source=.\SQLEXPRESS;Initial Catalog=PSData3;Integrated Security=SSPI"; string connStr2 = @"Data Source=10.110.1.230;Initial Catalog=PSData3;Integrated Security=SSPI"; try { sqlConnection = new SqlConnection(connStr1); sqlConnection.Open(); sqlConnection.Close(); } catch (Exception ex) { //确保用10.110.1.230测试的时候,不报错 sqlConnection = new SqlConnection(connStr2); sqlConnection.Open(); sqlConnection.Close(); }
代码修改成下面这个样子,我猜测了一下,以前真实服务器部署没问题,那就说明部署在真实服务器上用的是connStr1,我自己电脑上用的是connStr3也就是公司的数据库服务器地址,在客户电脑上不行,我添加了connStr2。
//本地连接本地数据库 string connStr1 = @"Data Source=.\SQLEXPRESS;Initial Catalog=PSData3;Integrated Security=SSPI"; string connStr2 = @"Data Source=localhost;Initial Catalog=PSData3;;User ID=sa;Password=123456;Integrated Security=false;"; string connStr3 = @"Data Source=10.110.1.230;Initial Catalog=PSData3;;User ID=sa;Password=123456;Integrated Security=false;"; try { sqlConnection = new SqlConnection(connStr1); sqlConnection.Open(); sqlConnection.Close(); } catch (Exception ex) { try { sqlConnection = new SqlConnection(connStr2); sqlConnection.Open(); sqlConnection.Close(); } catch (Exception ex2) { //确保用10.110.1.230测试的时候,不报错 sqlConnection = new SqlConnection(connStr3); sqlConnection.Open(); sqlConnection.Close(); } }
这样的话,在真实服务器不会跳到try catch里,而在客户测试和我自己电脑上会跳到try catch里,首次加载会很慢,不过因为是测试,也没关系。
工作中经常会遇到这样的问题,找不出原因的时候,见了鬼似的。有时候解决问题的思路误入歧途,比如觉得是电脑问题、系统环境问题等。静下心来,才能找到问题的答案。
标签:
原文地址:http://www.cnblogs.com/s0611163/p/4915029.html