头一次为了完成象征性的作业而使用asp.net,第一次使用asp.net啊,汗。所以马上就碰到了问题,我现在把这个问题写出来,对于开发过asp.net的人,这个问题应该不成为问题吧,我也只是针对刚刚接触asp.net的人。昨晚在尝试DataGrid时,出现如下错误:
“/DataGridTest”应用程序中的服务器错误。
--------------------------------------------------------------------------------
用户 'HP-2V47VI88M4GB\ASPNET' 登录失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 用户 'HP-2V47VI88M4GB\ASPNET' 登录失败。
源错误:
行 31: if(!this.IsPostBack)
行 32: {
行 33: sqlDataAdapter1.Fill(dataSet11,0,10,"Products");
行 34: this.DataBind();
行 35: }
源文件: c:\inetpub\wwwroot\datagridtest\webform1.aspx.cs 行: 33
堆栈跟踪:
[SqlException: 用户 'HP-2V47VI88M4GB\ASPNET' 登录失败。]
System.Data.SqlClient.ConnectionPool.GetConnection(Boolean& isInTransaction) +474
System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction) +372
System.Data.SqlClient.SqlConnection.Open() +384
System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState) +44
System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +304
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +77
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable) +40
DataGridTest.WebForm1.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\datagridtest\webform1.aspx.cs:33
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +750
==============================================================================
按照我的出现的Exception,我的解决方法如下:
1、在SQL Server创建 “电脑名\ASPNET”用户。比如我创建HP-2V47VI88M4GB\ASPNET
2、在SQL Enterprise manager里打开“安全性”文件夹,右击“登录”,选择“新建登录……”。“常规”选项卡,“名称”填HP-2V47VI88M4GB\ASPNET,其他默认;“数据库访问”选项卡,指定访问的数据库,我指定的是Northwind数据库,然后给他赋权限:dbo,public就够了。
如果有更好的方法,请不啻指教