Reputation: 4987
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.
Upvotes: 15
Views: 28516
Reputation: 2380
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.
Upvotes: 1
Reputation: 265
Making a "dumb" change, e.g. 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.
Upvotes: 1
Reputation: 4987
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
Upvotes: 27