iframe 解析器错误(HtmlIframe/HtmlGenericControl)但仍在使用 .NET 4.0(不是 .NET 4.5)

问题描述 投票:0回答:3

这是我的错误消息

解析器错误消息:基类包含字段“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。

c# asp.net .net visual-studio-2010 visual-studio-2012
3个回答
25
投票

另一个人和我有同样的问题,并在这篇文章中解决了: https://stackoverflow.com/a/21707234/156611

基本上,确保您的

compilation targetFramework
设置为4.6.1(或您正在使用的任何版本),然后进入您的ASPX/ASCX文件,抛出错误并保存它。保存将重新创建具有适当类型的设计器文件。

就我而言,它更改为:

System.Web.UI.HtmlControls.HtmlGenericControl

至:

System.Web.UI.HtmlControls.HtmlIframe

1
投票

做出“愚蠢”的改变,例如在 ASCX 文件中插入一个空行,然后保存它 - 就像一个魅力一样。之后,所有 HtmlGenericControl 实例都更改为 HtmlIframe 实例,这解决了问题。

如果这不是一个选项,那么在 web.config 编译标记中将 targetFramework 设置为“4.0”是最后一根稻草。


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 版本的框架中,似乎有一种不同的方法来处理该特定元素。

© www.soinside.com 2019 - 2024. All rights reserved.