简体   繁体   中英

iframe parser error (HtmlIframe/HtmlGenericControl) but still using .NET 4.0 (not .NET 4.5)

Here's my error message

Parser Error Message : The base class includes the field 'iframeShim', but its type (System.Web.UI.HtmlControls.HtmlGenericControl) is not compatible with the type of control (System.Web.UI.HtmlControls.HtmlIframe).

Source Error :

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>

and I'm using .NET 4.0

Version Information : Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34249

and the designer code is:

protected global::System.Web.UI.HtmlControls.HtmlGenericControl iframeShim;

The searches I've done show that this is typically an error when you upgrade to .NET 4.5 and the type of the server side variable hasn't been updated properly (needs to be HtmlIframe , not HtmlGenericControl ). Also, those searches have the Parser Error Message slightly different (which makes sense when running in 4.5) - their message is:

... but its type (System.Web.UI.HtmlControls.HtmlIframe) is not compatible with the type of control (System.Web.UI.HtmlControls.HtmlGenericControl).

My targetFramework in web.config is:

<compilation targetFramework="4.0">

So, I'm not exactly sure what is going on here. Any ideas? Note, I've installed VS2012 and just recently had to go back to the VS2010 project and do some work in it and this started to happen. I immediately thought it was a .NET versioning issue, but everything still shows I'm using .NET 4.0 in this VS2010 project.

Another person had the same issue as I did and it was resolved in this post: https://stackoverflow.com/a/21707234/156611

Basically, make sure your compilation targetFramework is set to 4.6.1 (or whatever you are using) and then go into your ASPX/ASCX file throwing the error and save it. The saving will re-create the designer file with the appropriate type.

in my case, it changed from:

System.Web.UI.HtmlControls.HtmlGenericControl

to:

System.Web.UI.HtmlControls.HtmlIframe

Making a "dumb" change, eg inserting a blank line, in ASCX file, then saving it - worked like a charm. Upon that, all HtmlGenericControl instances change to HtmlIframe ones, and that resolves the issues.

If this is not an option, then setting targetFramework to "4.0" in web.config compilation tag is the last straw.

In my case I had this issue where my localhost was able to run the code fine. In the designer file it was defined an HtmlIFrame correctly. On my staging server the code complained with the same error "but its type (System.Web.UI.HtmlControls.HtmlGenericControl) is not compatible with the type of control (System.Web.UI.HtmlControls.HtmlIframe)"

In my specific case my local compilation tag in web.config was set to 4.7.2 to match my running framework in my project settings.

However my staging web server had targetFramework="4.0" probably from a long time ago when the server was initially setup. Altering the servers web.config file to match 4.7.2 fixed my issue. There seems to be a different way to handle that specific element in older 4.0 version of the framework.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM