我用asp.net开发了一个系统,数据库是oracle,一直都没有问题的,昨天我在开发的系统中输入用户名和密码后就出现下面的错误了,我检查服务器上的oracle并没有出错,一切正常,我不知道是怎么回事,请高手帮忙:
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------
Error while trying to retrieve text for error ORA-12154 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
异常详细信息: System.Data.OracleClient.OracleException: Error while trying to retrieve text for error ORA-12154 
源错误: 
行 27:  OracleDataAdapter odaAdapter = new OracleDataAdapter(cmd);
行 28:  DataSet dsDataSet = new DataSet();
行 29:  odaAdapter.Fill(dsDataSet);      //这里红色显示警告(由于这里没
                                                             有颜色设置,我自己添加的注释,
                                                             方便大家看问题)
行 30: 
行 31:  if(dsDataSet.Tables.Count != 0)
源文件: E:\project\yaya\yayasln\Framework\Authentication.cs    行: 29 
堆栈跟踪: 
[OracleException: Error while trying to retrieve text for error ORA-12154
]
   System.Data.OracleClient.DBObjectPool.GetObject(Boolean& isInTransaction) +469
   System.Data.OracleClient.OracleConnectionPoolManager.GetPooledConnection(String encryptedConnectionString, OracleConnectionString options, Boolean& isInTransaction) +165
   System.Data.OracleClient.OracleConnection.OpenInternal(OracleConnectionString parsedConnectionString, Object transact) +836
   System.Data.OracleClient.OracleConnection.Open() +32
   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) +38
   TongHua.Framework.Authentication.ExecuteSql(String strSQL, OracleParameter[] commandParameters) in E:\project\yaya\yayasln\Framework\Authentication.cs:29
   TongHua.Framework.Authentication.Login(String strUserName, String strPwd) in E:\project\yaya\yayasln\Framework\Authentication.cs:44
   TongHua.Web.Pages.MainFrame.Login.btLogin_Click(Object sender, EventArgs e) in E:\project\yaya\yayasln\yayaerp\Login.aspx.cs:60
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1292 

解决方案 »

  1.   

    不管是程序的错误还是数据库的错误,你先在asp.net中把可能的异常错误show出来看看,然后判断是哪里的错误.做异常处理try
    {
        ....
    }
    catch(Exception ex)
    {
         MessageBox.show(ex.Message);
    }
    finally
    {
     ...
    }
      

  2.   

    private void btLogin_Click(object sender, System.EventArgs e)
    {
    //ScriptMsgBox("UserName =" + tbUserName.Text.Trim()); bool bReturn = false;
    string strUserID = tbUserName.Text.Trim(), strPwd = tbPwd.Text.Trim();
    bReturn = Authentication.Login(strUserID, strPwd); if(false == bReturn)
    {
    Response.Write("您没有访问的权限!");
    Response.End();
    return;
    } Session["UserID"] = tbUserName.Text.Trim(); if(Request["ReturnUrl"] == null)
    {
    System.Web.Security.FormsAuthentication.SetAuthCookie(strUserID, true);
    //this.JumpMain();
    Response.Redirect("Pages\\MainFrame\\MainForm.aspx");

    }
    else
    {
    System.Web.Security.FormsAuthentication.RedirectFromLoginPage(strUserID, true);
    }
    }这是登陆按钮的代码,我点了一下就出现上面问题提示的错误,希望谁能告诉我try...catch如何写!!!
      

  3.   

    private void btLogin_Click(object sender, System.EventArgs e)
    {
               
      try{
    //ScriptMsgBox("UserName =" + tbUserName.Text.Trim()); bool bReturn = false;
    string strUserID = tbUserName.Text.Trim(), strPwd = tbPwd.Text.Trim();
    bReturn = Authentication.Login(strUserID, strPwd); if(false == bReturn)
    {
    Response.Write("您没有访问的权限!");
    Response.End();
    return;
    } Session["UserID"] = tbUserName.Text.Trim(); if(Request["ReturnUrl"] == null)
    {
    System.Web.Security.FormsAuthentication.SetAuthCookie(strUserID, true);
    //this.JumpMain();
    Response.Redirect("Pages\\MainFrame\\MainForm.aspx");

    }
    else
    {
    System.Web.Security.FormsAuthentication.RedirectFromLoginPage(strUserID, true);
    }
      catch(Exception ex)
      {
         Response.write( ex );     
      } }
    //另外在Authentication.Login(strUserID, strPwd);里面也可加上try...catch....finally
    根据error ORA-12154 ,有可能是你的table与索引有关系统.
    能描述一下你的Authentication.Login()所访问到的table设计情况.
      

  4.   

    涉及两张表:tb_userinfo和tb_roleinfo
    /*==============================================================*/
    /* Table: TB_ROLEINFO                                           */
    /*==============================================================*/
    create table YAYA.TB_ROLEINFO  (
       GLOBALID             VARCHAR2(36)                     not null,
       ROLEID               NUMBER                           not null,
       DISCRIPTION          VARCHAR2(32),
       constraint PK_TB_ROLEINFO primary key (GLOBALID, ROLEID)
    )
    /
    /*==============================================================*/
    /* Table: TB_USERINFO                                           */
    /*==============================================================*/
    create table YAYA.TB_USERINFO  (
       GLOBALID             VARCHAR2(36)                     not null,
       USERID               VARCHAR2(16)                     not null,
       PASSWORD             VARCHAR2(16)                     not null,
       ROLEID               NUMBER,
       USERNAME             VARCHAR2(16),
       constraint PK_TB_USERINFO primary key (GLOBALID, USERID)
    )
    /