【问题标题】:System.TypeInitializationException was unhandled by user code ERROR please help用户代码未处理 System.TypeInitializationException 错误请帮助
【发布时间】:2009-10-30 17:01:15
【问题描述】:

我正忙于使用 Visual Studio 2005 和 IIS 7 的电子商务 Web 应用程序

我收到了这个错误

System.TypeInitializationException 未被用户代码处理

Message="'ShopConfiguration' 的类型初始化程序引发了异常。"

Source="App_Code.r-ihwy-d"

TypeName="ShopConfiguration"

堆栈跟踪:

   at ShopConfiguration.get_DbProviderName()

   at GenericDataAccess.CreateCommand() in c:\inetpub\wwwroot\Beadafrican\App_Code\GenericDataAccess.cs:line 63

   at CatalogAccess.GetDepartments() in c:\inetpub\wwwroot\Beadafrican\App_Code\CatalogAccess.cs:line 28

   at UserControls_DepartmentsList.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\Beadafrican\UserControls\DepartmentsList.ascx.cs:line 22

   at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)

   at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)

   at System.Web.UI.Control.OnLoad(EventArgs e)

   at System.Web.UI.Control.LoadRecursive()

   at System.Web.UI.Control.LoadRecursive()

   at System.Web.UI.Control.LoadRecursive()

   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

如果我查看它所指的代码,我看不出有什么问题?这是代码,如果有人可以请提供帮助,那就太好了!

GenericDataAccess.cs:

公共静态类 GenericDataAccess { //静态构造函数 静态通用数据访问() { // // TODO: 在此处添加构造函数逻辑 // }

//execute a command and returns the result as a DataTable Object
public static DataTable ExecuteSelectCommand(DbCommand command)
{
    //The DataTable to be returned
    DataTable table;

    //Execute the command making sure the connection gets closed in the end
    try
    {
        //open the data connection
        command.Connection.Open();

        //Execute the command and save the results in a DataTable
        DbDataReader reader = command.ExecuteReader();
        table = new DataTable();
        table.Load(reader);

        //Close the reader
        reader.Close();
    }
    catch (Exception ex)
    {
        Utilities.LogError(ex);
        throw ex;
    }
    finally
    {
        //Close the connection
        command.Connection.Close();
    }
    return table;
}

//creates and prepares a new DbCommand object on a new connection
public static DbCommand CreateCommand()
{
    //Obtain the database provider name
    string dataProviderName = ShopConfiguration.DbProviderName;

    //Obtain the database connection string
    string connectionString = ShopConfiguration.DbConnectionString;

    //Create a new data provider factory
    DbProviderFactory factory = DbProviderFactories.GetFactory(dataProviderName);

    //Obtain a database specific connection object
    DbConnection conn = factory.CreateConnection();

    //Set the connection string
    conn.ConnectionString = connectionString;

    //Create a database specific command object
    DbCommand comm = conn.CreateCommand();

    //Set the command type to stored procedure
    comm.CommandType = CommandType.StoredProcedure;

    //Return the initialised command object
    return comm;
}

CatalogAccess.cs

公共静态类 CatalogAccess { 静态目录访问() { // // TODO: 在此处添加构造函数逻辑 // }

//Retrieve the list of departments
public static DataTable GetDepartments()
{
    //get configured DbCommand object
    DbCommand comm = GenericDataAccess.CreateCommand();

    //set the stored procedure name
    comm.CommandText = "GetDepartments";

    //execute the stored procedure and return the results
    return GenericDataAccess.ExecuteSelectCommand(comm);


}

}

DepartementList.ascx.cs

公共部分类 UserControls_DepartmentsList : System.Web.UI.UserControl { // 将部门详细信息加载到 DataList protected void Page_Load(object sender, EventArgs e) { // 在回发期间不要重新加载数据

   {
        // CatalogAccess.GetDepartments returns a DataTable object containing
        // department data, which is read in the ItemTemplate of the DataList
        list.DataSource = CatalogAccess.GetDepartments();
        // Needed to bind the data bound controls to the data source
        list.DataBind();

    }
}

}

ShopConfiguration 类

{ //缓存连接字符串 私有只读静态字符串 dbConnectionString;

//Caches the data provider name
private  readonly

静态字符串 dbProviderName;

//stores the number of products per page
private readonly static int productsPerPage;

//Stores the product description length for product lits
private readonly static int productDescriptionLenght;

//Store the name of your shop
private readonly static string siteName;

//Initialize various proeprties in the constructor
static ShopConfiguration()
{
    dbConnectionString = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
    dbProviderName = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ProviderName;
    productsPerPage = Int32.Parse(ConfigurationManager.AppSettings["ProductsPerPage"]);
    productDescriptionLenght = Int32.Parse(ConfigurationManager.AppSettings["ProductDescriptionLenght"]);
    siteName = ConfigurationManager.AppSettings["SiteName"];

}

//Returns the connection string for BeadAfrican database
public static string DbConnectionString
{
    get
    {
        return dbConnectionString;
    }
}


//Returns the data provider name
public static string DbProviderName
{
    get
    {
        return dbProviderName;
    }
}

【问题讨论】:

  • 这是我的连接字符串 - 也许我遗漏了什么? 连接字符串>

标签: c#-2.0


【解决方案1】:

我很确定被抛出的TypeInitializationException 有另一个异常分配给它的InnerException 属性。如果您检查该异常,我认为您会找到问题的真正原因。

【讨论】:

    【解决方案2】:

    听起来您为 DbProviderName 指定了无效设置,因此内部检查代码会报告此异常。您最好查看连接字符串设置。

    【讨论】:

    • 这是我的连接字符串 - 也许我遗漏了什么? 连接字符串>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多