C#连接Access数据库,在IIS中报未知异常,但用VS自带的服务器正常
C#连接Access数据库,在IIS中报未知错误,但用VS自带的服务器正常。
connectionString为:Provider=Microsoft.Jet.OleDb.4.0;Data Source=E:\PRIVATE\ESTown ACCESS\Web\App_Data\enstom.mdb
SQLString为:select userId,userLoginName,userLoginPassWord,userName,userTelNo,userEmail,userType,userAdd,userRemark FROM userTable where userLoginName = 'admin'
代码如下:
在跟踪时发现,是connection.Open()抛出错误,但是只是在IIS下抛出,在VS自带的服务器下运行正常。
IE显示的错误信息:
“/ESTownAccess”应用程序中的服务器错误。
--------------------------------------------
未指定的错误
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Exception: 未指定的错误
源错误:
行 320: catch (System.Data.OleDb.OleDbException ex)
行 321: {
行 322: throw new Exception(ex.Message);
行 323: }
行 324: return ds;
源文件: E:\PRIVATE\ESTown ACCESS\DBUtility\DbHelperOleDb.cs 行: 322
堆栈跟踪:
[Exception: 未指定的错误]
Maticsoft.DBUtility.DbHelperOleDb.Query(String SQLString) in E:\PRIVATE\ESTown ACCESS\DBUtility\DbHelperOleDb.cs:322
Fly.ESTown.DAL.userTable.GetList(String strWhere) in E:\PRIVATE\ESTown ACCESS\DAL\userTable.cs:208
Fly.ESTown.BLL.userTable.GetList(String strWhere) in E:\PRIVATE\ESTown ACCESS\BLL\userTable.cs:90
Fly.ESTown.BLL.userTable.IsAuthenticated(String strUserLoginName, String strUserLoginPassword) in E:\PRIVATE\ESTown ACCESS\BLL\userTable.cs:189
Fly.ESTown.Web.Admin.Login.Login1_Authenticate(Object sender, AuthenticateEventArgs e) in E:\PRIVATE\ESTown ACCESS\Web\Admin\Login.aspx.cs:30
System.Web.UI.WebControls.Login.OnAuthenticate(AuthenticateEventArgs e) +108
System.Web.UI.WebControls.Login.AttemptLogin() +115
System.Web.UI.WebControls.Login.OnBubbleEvent(Object source, EventArgs e) +101
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +166
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
------解决方案--------------------
把connection.Open();这个去掉,OleDbDataAdapter的Fill方法不需要打开数据库。还有,你是不是开着Access呢呀?
------解决方案--------------------
访问权限有么
connectionString为:Provider=Microsoft.Jet.OleDb.4.0;Data Source=E:\PRIVATE\ESTown ACCESS\Web\App_Data\enstom.mdb
SQLString为:select userId,userLoginName,userLoginPassWord,userName,userTelNo,userEmail,userType,userAdd,userRemark FROM userTable where userLoginName = 'admin'
代码如下:
- C# code
/// <summary> /// 执行查询语句,返回DataSet /// </summary> /// <param name="SQLString">查询语句</param> /// <returns>DataSet</returns> public static DataSet Query(string SQLString) { using (OleDbConnection connection = new OleDbConnection(connectionString)) { DataSet ds = new DataSet(); try { connection.Open(); OleDbDataAdapter command = new OleDbDataAdapter(SQLString, connection); command.Fill(ds, "ds"); } catch (System.Data.OleDb.OleDbException ex) { throw new Exception(ex.Message); } return ds; } }
在跟踪时发现,是connection.Open()抛出错误,但是只是在IIS下抛出,在VS自带的服务器下运行正常。
IE显示的错误信息:
“/ESTownAccess”应用程序中的服务器错误。
--------------------------------------------
未指定的错误
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Exception: 未指定的错误
源错误:
行 320: catch (System.Data.OleDb.OleDbException ex)
行 321: {
行 322: throw new Exception(ex.Message);
行 323: }
行 324: return ds;
源文件: E:\PRIVATE\ESTown ACCESS\DBUtility\DbHelperOleDb.cs 行: 322
堆栈跟踪:
[Exception: 未指定的错误]
Maticsoft.DBUtility.DbHelperOleDb.Query(String SQLString) in E:\PRIVATE\ESTown ACCESS\DBUtility\DbHelperOleDb.cs:322
Fly.ESTown.DAL.userTable.GetList(String strWhere) in E:\PRIVATE\ESTown ACCESS\DAL\userTable.cs:208
Fly.ESTown.BLL.userTable.GetList(String strWhere) in E:\PRIVATE\ESTown ACCESS\BLL\userTable.cs:90
Fly.ESTown.BLL.userTable.IsAuthenticated(String strUserLoginName, String strUserLoginPassword) in E:\PRIVATE\ESTown ACCESS\BLL\userTable.cs:189
Fly.ESTown.Web.Admin.Login.Login1_Authenticate(Object sender, AuthenticateEventArgs e) in E:\PRIVATE\ESTown ACCESS\Web\Admin\Login.aspx.cs:30
System.Web.UI.WebControls.Login.OnAuthenticate(AuthenticateEventArgs e) +108
System.Web.UI.WebControls.Login.AttemptLogin() +115
System.Web.UI.WebControls.Login.OnBubbleEvent(Object source, EventArgs e) +101
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +166
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
------解决方案--------------------
把connection.Open();这个去掉,OleDbDataAdapter的Fill方法不需要打开数据库。还有,你是不是开着Access呢呀?
------解决方案--------------------
访问权限有么