我最近在我的生产机器上安装了带有.Net Framework4.5的Visual Studio11Beta(但没有安装Visual Studio2010)。它在几天内对我来说工作得很好,但后来它开始在这段代码中抛出InvalidOperationException:
ItemDB itemDB = new ItemDB();
ItemDetails item = itemDB.GetItem((int)Session["itemId"]);
string code = item.Code;
Control html = ParseControl(code);
placeholderPage.Controls.Add(html);异常发生在I ParseControl的行上,在字符串代码中,我有常规的html。最奇怪的是,在我安装新的Visual Studio之前,这段代码运行得很好,而且它仍然可以在他在.NET Framework4上安装VS2010的大学机器上运行。
在异常之后,它向我显示以下消息:Cannot instantiate type 'TracedLiteralControl' because there is no public parameterless constructor.
发布于 2012-04-18 17:42:11
我也有同样烦人的问题,但是当我使用Page.ParseControl的时候。以下是详细信息:出现System.InvalidOperationException消息:无法实例化类型“”TracedLiteralControl“”,因为没有公共无参数构造函数。“”
然后查看字节,我发现了下面这行有趣的代码: Microsoft.VisualStudio.Web.PageInspector.Loader.dll!Microsoft.VisualStudio.Web.Runtime.WebForms.TracedLiteralControlBuilder.BuildObject() + 0x2f CallStack
看起来,为了新的PageInspector功能,VS 11在我的web应用运行时中插入了一个程序集。我不确定是否添加了该程序集,因此最明显的查找位置是在.NET框架配置中,尤其是在web.config中
在我的例子中,文件放在C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config和"Bingo“下-在第88行,我找到了下面的内容:
<add assembly="Microsoft.VisualStudio.Web.PageInspector.Loader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />我注释掉了这行代码,我的应用程序又能正常工作了。
希望这能帮上忙,Velio
发布于 2012-11-29 17:38:39
如果页面检查器有问题,您可以在自己的web.config中禁用它:
<compilation defaultLanguage="c#" debug="true" targetFramework="4.0">
<assemblies>
<remove assembly="Microsoft.VisualStudio.Web.PageInspector.Loader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
</compilation>https://stackoverflow.com/questions/9705225
复制相似问题