我在本机上开发Asp.net应用程序时,数据连接总是出问题,用的VS中向导生成的数据连接竟然在招待open()方法时竟然提示出错如下:
System.Data.SqlClient.SqlException: 用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败
//
其中自动生成的连接代码如下
this.sqlConnection1.ConnectionString = "workstation id=\"WHUT-QKYONG\";packet size=4096;user id=sa;integrated security=SSPI" +
";data source=\"WHUT-QKYONG\";persist security info=False;initial catalog=GadgetsWa" +
"rehouse";//
奇怪的是;我用同样的方法在别人机器上很容易的就调试通过,且可以用一个DataGrid控件就能显示出数据库中一个表的内容;而我在我的机器上用同样的方法生成一个Windows应用程序时也能用DataGrid控件正确的显示数据库中内容,各位能给我解决一下吗?(我不想重装数据库呀,也想知道为什么,解决立马给分!!)
也给出我用来测试的一些代码this.sqlConnection1.Open();
DataSet ds=new DataSet();
SqlDataAdapter da=new SqlDataAdapter("select * from products",this.sqlConnection1);
da.Fill(ds,"products");
this.sqlConnection1.Close();
this.DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
(我想应该与这无关,因为
行 26: this.sqlConnection1.Open();就出错了)
System.Data.SqlClient.SqlException: 用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败
//
其中自动生成的连接代码如下
this.sqlConnection1.ConnectionString = "workstation id=\"WHUT-QKYONG\";packet size=4096;user id=sa;integrated security=SSPI" +
";data source=\"WHUT-QKYONG\";persist security info=False;initial catalog=GadgetsWa" +
"rehouse";//
奇怪的是;我用同样的方法在别人机器上很容易的就调试通过,且可以用一个DataGrid控件就能显示出数据库中一个表的内容;而我在我的机器上用同样的方法生成一个Windows应用程序时也能用DataGrid控件正确的显示数据库中内容,各位能给我解决一下吗?(我不想重装数据库呀,也想知道为什么,解决立马给分!!)
也给出我用来测试的一些代码this.sqlConnection1.Open();
DataSet ds=new DataSet();
SqlDataAdapter da=new SqlDataAdapter("select * from products",this.sqlConnection1);
da.Fill(ds,"products");
this.sqlConnection1.Close();
this.DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
(我想应该与这无关,因为
行 26: this.sqlConnection1.Open();就出错了)
这是我用的,在配置文件中,改成你的就行了。
2。你sqlserver中,没有aspnet这个用户,将这个用户加入即可
2. web.config中加入<identity impersonate="true" />
而微软出的示例程序,如PetShop和QuickStart,访问数据库的方式都是Windows身份验证。
所以必须把你电脑上安装的所有Sql Server数据库的实例全部设定为Windows和Sql混合身份验证,而且必须在Sql Server的企业管理器内数据库的“安全性”-->“登录”内加入错误信息提示的“'NT AUTHORITY\NETWORK SERVICE' ”用户。而这个用户是无法使用正常方式添加的,方法如下:
1 关闭所有程序
2 打开“系统”快捷菜单-->“管理”
3 在“本地用户和组”内的Administrators组上双击,出现添加属性对话框。
4 单击“添加”按钮,出现添加用户对话框
5 单击“高级”按钮,再单击“搜索”按钮。注:此'NT AUTHORITY\NETWORK SERVICE'用户为系统内置帐户,无法直接添加。
6 在“搜索结果”内选择“Network Service”用户后,单击“确定”
7 再次单击确定,则Network Service用户加入Administrators组,此用户就是Win2003的asp.net进程用户。
8 下面把此用户设置可以访问Sql Server。关闭“计算机管理”,打开Sql Server的企业管理器。
9 选择你要加入帐户的Sql Server实例,选择“安全性”,选择“登录”然后加入你刚才加入Administrator组的那个Network Service用户,然后选择此用户的权限,然后关闭企业管理器。
10 确认你的Sql Server设置为Windows身份验证或混合验证
11 打开QucikStart或者PetShop,可以正常访问。