21
votes

Recently, my team converted ASP.NET project from .NET 1.1 to .NET 2.0. Everything is pretty good so far except for one web page.

This is the error message I got when I tried to open this page:

Server Error in '/' Application.

Parser Error Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: Ambiguous match found.

Source Error:

Line 1: <%@ Control Language="c#" AutoEventWireup="false" Codebehind="Template.ascx.cs" Inherits="eReq.Web.WebControls.Template.Template" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %> Line 2: Line 3: function ExpandCollapse_Template(inBtn, inSection, inSectionID) {

Source File: /WebControls/Template/Template.ascx
Line: 1

-------------------------------------------------------------------------------- Version Information: Microsoft .NET Framework Version:2.0.50727.3053; ASP.NET Version:2.0.50727.3053

I tried renaming class and renaming filename but it didn't work.

Anyone have any idea on this?

6

6 Answers

41
votes

It may appeared because of different names of components? for example Button1 and button1, it compiles as casesensitive, but executed as caseinsensitive.

12
votes

In your ASCX file, go through each and every control and change its id. For example,

<asp:TextBox id="foo" />

change it to

<asp:TextBox id="foo1" >

You've probably got a control with an ID that matches a property in your ascx file, so when the compiler is trying to make instance variables its colliding.

3
votes

I've the same problem and it solved and the solution is in check your code behind and you will find a couple of Controls with the same name:

protected Button Home;

protected System.Web.UI.HtmlControls.HtmlAnchor home; 

you have to erase one line or comment it.

2
votes

The selected answer seems to be the right one.

In my case i found that im using a variable in the codebehind with the same name as a control in the aspx file, just with different case usage.

0
votes

I'd trawl your web.config for 1.1 and 2.0 references to the same DLL. In most cases that I have gotten this it was System.Web.Extensions.

Also check the @registers in Pages if that fails.

Good luck (it is not a fun bug to find!)

Dan

-1
votes

This is due to what can only be described as a defect in System.Web.UI.Util.GetNonPrivateFieldType(Type classType, String fieldName) that allows UI (.aspx/.ascx) fields to compile as case-insensitive but attempts to retrieve them as case-sensitive during the intial parse.

A potential remedy for the time being is to catch it at compile-time with an ms-build task.