这是我的错误消息
解析器错误消息:基类包含字段“iframeShim”, 但其类型 (System.Web.UI.HtmlControls.HtmlGenericControl) 不是 与控制类型兼容 (系统.Web.UI.HtmlControls.HtmlIframe)。
源错误:
Line 180: <iframe runat="server" id="iframeShim" frameborder="0" scrolling="no" style="position: absolute;
Line 181: display: block; z-index: 990; z-index: 990" src="~/blank.html"></iframe>
我正在使用.NET 4.0
版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET版本:4.0.30319.34249
设计师代码是:
protected global::System.Web.UI.HtmlControls.HtmlGenericControl iframeShim;
我所做的搜索表明,当您升级到 .NET 4.5 并且服务器端变量的类型尚未正确更新时,这通常是一个错误(需要是
HtmlIframe
,而不是 HtmlGenericControl
)。此外,这些搜索的解析器错误消息略有不同(这在 4.5 中运行时有意义) - 它们的消息是:
...但其类型(System.Web.UI.HtmlControls.HtmlIframe)不兼容 与控制类型 (系统.Web.UI.HtmlControls.HtmlGenericControl)。
我的 web.config 中的 targetFramework 是:
<compilation targetFramework="4.0">
所以,我不太确定这里发生了什么。有任何想法吗?请注意,我已经安装了 VS2012,最近不得不返回 VS2010 项目并在其中做一些工作,这种情况开始发生。我立即认为这是一个 .NET 版本控制问题,但一切仍然表明我在这个 VS2010 项目中使用 .NET 4.0。
另一个人和我有同样的问题,并在这篇文章中解决了: https://stackoverflow.com/a/21707234/156611
基本上,确保您的
compilation targetFramework
设置为4.6.1(或您正在使用的任何版本),然后进入您的ASPX/ASCX文件,抛出错误并保存它。保存将重新创建具有适当类型的设计器文件。
就我而言,它更改为:
System.Web.UI.HtmlControls.HtmlGenericControl
至:
System.Web.UI.HtmlControls.HtmlIframe
做出“愚蠢”的改变,例如在 ASCX 文件中插入一个空行,然后保存它 - 就像一个魅力一样。之后,所有 HtmlGenericControl 实例都更改为 HtmlIframe 实例,这解决了问题。
如果这不是一个选项,那么在 web.config 编译标记中将 targetFramework 设置为“4.0”是最后一根稻草。
就我而言,我遇到了这个问题,我的本地主机能够正常运行代码。 在设计器文件中,它被正确定义为 HtmlIFrame。 在我的临时服务器上,代码抱怨相同的错误“但其类型 (System.Web.UI.HtmlControls.HtmlGenericControl) 与控件类型 (System.Web.UI.HtmlControls.HtmlIframe) 不兼容”
在我的具体情况下,我在 web.config 中的本地编译标记设置为 4.7.2 以匹配我的项目设置中的运行框架。
但是,我的临时 Web 服务器可能在很久以前最初设置服务器时就有 targetFramework="4.0"。 更改服务器 web.config 文件以匹配 4.7.2 解决了我的问题。 在旧版 4.0 版本的框架中,似乎有一种不同的方法来处理该特定元素。