【问题标题】:No parameterless constructor defined for this object ASP.NET Website没有为此对象定义无参数构造函数 ASP.NET 网站
【发布时间】:2014-06-14 04:26:23
【问题描述】:

我遇到了错误,任何人都可以帮助我。我正在使用带有 linq to sql 的 dotnet 框架 4 下面是堆栈跟踪

No parameterless constructor defined for this object.

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.MissingMethodException:没有为此对象定义无参数构造函数。

来源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常来源和位置的信息。

堆栈跟踪:

 [MissingMethodException: No parameterless constructor defined for this object.]
   System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
   System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +113
   System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +232
   System.Activator.CreateInstance(Type type, Boolean nonPublic) +83
   System.Activator.CreateInstance(Type type) +6
   System.Web.HttpRuntime.FastCreatePublicInstance(Type type) +78
   System.Web.UI.WebControls.LinqDataSourceView.CreateContext(Type contextType) +6
       System.Web.UI.WebControls.LinqDataSourceView.CreateContextAndTable(DataSourceOperation operation) +799
   System.Web.UI.WebControls.LinqDataSourceView.CreateContextAndTableForSelect() +137
   System.Web.UI.WebControls.LinqDataSourceView.CreateContext(DataSourceOperation operation) +12
   System.Web.UI.WebControls.ContextDataSourceView.GetSource(QueryContext context) +20
   System.Web.UI.WebControls.LinqDataSourceView.GetSource(QueryContext context) +325
   System.Web.UI.WebControls.LinqDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +63
   System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +21
   System.Web.UI.WebControls.DataBoundControl.PerformSelect() +138
   System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +30
   System.Web.UI.WebControls.GridView.DataBind() +4
   System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +105
   System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +75
   System.Web.UI.Control.EnsureChildControls() +83
   System.Web.UI.Control.PreRenderRecursiveInternal() +42
   System.Web.UI.Control.PreRenderRecursiveInternal() +155
   System.Web.UI.Control.PreRenderRecursiveInternal() +155
   System.Web.UI.Control.PreRenderRecursiveInternal() +155
   System.Web.UI.Control.PreRenderRecursiveInternal() +155
   System.Web.UI.Control.PreRenderRecursiveInternal() +155
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +974

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET     Version:4.0.30319.18446

【问题讨论】:

  • 能否请您在您的aspx页面代码后面发布代码。

标签: c# asp.net linq linq-to-sql


【解决方案1】:

LINQDataContext.Designer.cs 文件是自动生成的,不要更改它,而是在没有参数化构造函数的单独文件中创建部分类,例如:

public partial class MyDataContext : System.Data.Linq.DataContext
{
    public MyDataContext() 
        :base( ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString, mappingSource)
    {

    }
}

【讨论】:

    【解决方案2】:

    问题已解决。我只是在 LINQDataContext.Designer.cs 中创建了一个无参数构造函数

    public ChallanTemplateDataContext(): 
      base(Util.connectionStr, mappingSource)
    

    {

      OnCreated();
    

    }

    【讨论】:

    • 太棒了。您所需要的只是正确的方向,然后您自己就解决了问题。干杯!
    【解决方案3】:

    错误是不言自明的。你可能已经创建了一个这样的类。您只需要在其中添加一个无参数构造函数。请参见下面的示例:

    public class cls
    {
       public cls ()
       {
       }
       // your other parameterized constructors
    }
    

    【讨论】:

    • 你的答案并不像它可能的那样清楚:OP 有一个已经有参数化构造函数的类,但它们也可能由于序列化而需要一个默认的无参数构造函数。
    • 我只是在调试代码时将 LinqDataSource 分配给 Gridview,但在显示页面加载错误页面之后完全没有异常。
    • @slugster:同意。我们无法通过查看堆栈跟踪来找出确切的问题。我们可以吗?所以这是我可以建议的最接近 OP 问题的解决方案。
    猜你喜欢
    • 2010-11-24
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    相关资源
    最近更新 更多