首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >升级到.NET 4.5后出现iFrame解析器错误

升级到.NET 4.5后出现iFrame解析器错误
EN

Stack Overflow用户
提问于 2013-07-23 19:52:10
回答 10查看 65K关注 0票数 69

我们最近将所有的WebForms项目升级到了.NET 4.5,在加载带有iFrame元素的页面时遇到了一个解析器问题。我们已经通过将iFrameHtmlGenericControl转换为HtmlIframe纠正了这个问题。当我们在本地运行代码时,这已经纠正了所有的解析器错误。

当我们部署应用程序时,我们会收到以下错误消息:

帧分析器错误消息:基类包含字段‘(System.Web.UI.HtmlControls.HtmlGenericControl).**’,但其类型(System.Web.UI.HtmlControls.HtmlIframe)与控件帧的类型不兼容

当我使用HtmlGenericControl部署旧代码时,错误消失了,这表明即使我们安装了.NET 4.5,服务器仍在使用旧版本?

我已经尝试过删除和重新安装.NET it,确保向IIS注册了asp。

带有IIS7.5和.NET 4.5的Windows 2008 R2

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2013-07-31 18:46:43

我们能够解决这个问题,将

<iframe id="iframe" runat="server" />

<asp:HtmlIframe id="iframe" runat="server" />
票数 21
EN

Stack Overflow用户

发布于 2014-02-12 00:19:14

基本问题是由ASP.NET编译器(将ASPX和ASCX文件编译为C#或VB代码)从Web Forms IFRAME服务器控件生成的对象与后面的Web Forms代码中与该控件对应的变量类型之间的不兼容性。IFRAME服务器控件(<iframe id="frame" runat="server" />)将被解析为特定类型的控件。在ASP.NET 4中,IFRAME服务器控件将是HtmlGenericControl控件。在IFRAME 4.5中,ASP.NET服务器控件将是HtmlIframe控件。

通过确保web.config文件中compilation元素上的targetFramework属性与项目的目标框架属性一致,并且与IFRAME服务器控件对应的变量与ASP.NET编译器将生成的控件类型匹配,可以修复此问题。

在Visual Studio2013中转换为.NET Framework4.5的ASP.NET 4项目将修改项目的web.config文件,以便compilation元素的targetFramework属性具有值" 4.5“(<compilation targetFramework="4.5"/>)。这会导致ASP.NET编译器将IFRAME服务器控件视为HtmlIframe控件。如果控制变量后面的Web窗体代码仍然是HtmlGenericControl,这可能会导致问题。您看到的错误如下所示:

frame基类包含字段“

”,但其类型frame与控件类型(System.Web.UI.HtmlControls.HtmlIframe)不兼容。

前面错误的解决方案是更新与IFRAME服务器控件相对应的服务器控件变量的类型。您可以通过重新保存Web窗体HTML文件来执行此操作,这将导致重新生成设计器文件。据我所知(至少在Visual Studio 2013中)没有必要更改控件ID。如果服务器控制变量在代码隐藏文件中,则必须手动更新它。

如果ASP.NET文件中HtmlIframe元素的targetFramework属性的值为"4.0“(<compilation targetFramework="4.0"/>),则在编译后的变量为web.config的项目中,如果编译的targetFramework属性的值为”4.0“(<compilation targetFramework="4.0"/>),则该项目将遇到类似但不同的问题。这会导致ASP.NET编译器将IFRAME服务器控件视为HtmlGenericControl控件。您看到的错误如下所示:

(System.Web.UI.HtmlControls.HtmlGenericControl).基类包含字段“

”,但其类型(System.Web.UI.HtmlControls.HtmlIframe)与控件框架的类型不兼容

修复上述错误的方法是确保web.config编译设置与项目的目标框架属性一致。在这种情况下,web.config中的compilation元素的targetFramework属性的值应该是"4.5“。

<compilation targetFramework="4.5"/>

注意:将编译元素的targetFramework属性设置为4.5也会产生将httpRuntime元素的targetFramework属性设置为4.5的效果。有关详细信息,请参阅https://blogs.msdn.microsoft.com/webdev/2012/11/19/all-about-httpruntime-targetframework/

注2:没有<asp:HtmlIframe>标签。将标记前缀"asp“注册到System.Web.UI.HtmlControls命名空间不是使用IFRAME服务器控件所必需的。

票数 88
EN

Stack Overflow用户

发布于 2013-11-21 21:27:03

您需要添加以下标签:

<asp:HtmlIframe>

在设计器中,将控件类型更改为:

System.Web.UI.HtmlControls.HtmlIframe

在Web.config中添加以下内容:

<controls>
 <add tagPrefix="asp" namespace="System.Web.UI.HtmlControls" assembly="System.Web"/>
</controls>

这个应该可以解决这个问题。

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17809446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档