我最近在矿山生产机器上安装了Visual Studio 11 Beta和.Net Framework 4.5(但是并排放置了Visual Studio 2010)。它对我来说好几天,但后来它开始在这部分代码中抛出InvalidOperationException
:
ItemDB itemDB = new ItemDB();
ItemDetails item = itemDB.GetItem((int)Session["itemId"]);
string code = item.Code;
Control html = ParseControl(code);
placeholderPage.Controls.Add(html);
异常发生在我ParseControl
的行上,在字符串代码中我有常规的html。最奇怪的是,在安装新的Visual Studio之前,这段代码运行得很好,而且它仍适用于在.NET Framework 4上安装了VS2010的大学机器。
异常后,它会显示以下消息:Cannot instantiate type 'TracedLiteralControl' because there is no public parameterless constructor.
答案 0 :(得分:7)
我有同样恼人的问题,但在使用Page.ParseControl时。 这是详细信息: 发生System.InvalidOperationException 消息:无法实例化类型' TracedLiteralControl'因为没有公共无参数构造函数。
然后看着CallStack我发现了以下有趣的一行: Microsoft.VisualStudio.Web.PageInspector.Loader.dll!Microsoft.VisualStudio.Web.Runtime.WebForms.TracedLiteralControlBuilder.BuildObject()+ 0x2f bytes
看起来,为了新的PageInspector功能,VS 11在我的Web应用程序运行时中插入一个程序集。我没有确定地添加了程序集,所以显而易见的地方是在.NET Framework配置中,特别是在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公司
答案 1 :(得分:3)
如果您在使用Page Inspector时遇到问题,可以在自己的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>