Ответ 1
Может возникнуть из-за разных имен компонентов? например Button1 и button1, он компилируется как чувствительный к регистру, но выполняется как caseinsensitive.
Недавно моя команда преобразовала проект ASP.NET с .NET 1.1 на .NET 2.0. До сих пор все хорошо, кроме одной веб-страницы.
Это сообщение об ошибке, которое я получил, когда попытался открыть эту страницу:
Ошибка сервера в приложении "/".
Ошибка Parser: ошибка произошел во время разбора ресурс, необходимый для обслуживания этого запрос. Просмотрите следующие конкретные детали ошибки анализа и соответствующим образом измените исходный файл.
Сообщение об ошибке Parser: неоднозначное совпадение найдено.
Ошибка источника:
Строка 1: <% @Язык управления = "С#" AutoEventWireup = "ложь" Codebehind = "Template.ascx.cs" Inherits = "eReq.Web.WebControls.Template.Template" TargetSchema = "http://schemas.microsoft.com/intellisense/ie5" % > Строка 2: Строка 3: функция ExpandCollapse_Template (inBtn, inSection, inSectionID) {
Исходный файл: /WebControls/Template/Template.ascx
Линия: 1----------------------------------------------- --------------------------------- Информация о версии: Microsoft.NET Версия Framework: 2.0.50727.3053; Версия ASP.NET: 2.0.50727.3053
Я попробовал переименовать класс и переименовать имя файла, но это не сработало.
У кого-нибудь есть идеи по этому поводу?
Может возникнуть из-за разных имен компонентов? например Button1 и button1, он компилируется как чувствительный к регистру, но выполняется как caseinsensitive.
В вашем файле ASCX пройдите через каждый элемент управления и измените его идентификатор. Например,
<asp:TextBox id="foo" />
измените его на
<asp:TextBox id="foo1" >
Вероятно, у вас есть элемент управления с идентификатором, который соответствует свойству в вашем ascx файле, поэтому, когда компилятор пытается заставить экземпляры переменных сталкиваться.
У меня та же проблема, и она решена, и решение проверяет ваш код позади, и вы найдете пару элементов управления с тем же именем:
protected Button Home;
protected System.Web.UI.HtmlControls.HtmlAnchor home;
вам нужно удалить одну строку или прокомментировать ее.
Я бы травил ваш web.config на 1.1 и 2.0 ссылки на одну и ту же DLL. В большинстве случаев, которые я получил, это System.Web.Extensions.
Также проверьте @registers в Pages, если это не удается.
Удачи (это не забавная ошибка!)
Dan
Выбранный ответ кажется правильным.
В моем случае я обнаружил, что im использует переменную в codebehind с тем же именем, что и элемент управления в файле aspx, только при использовании разных случаев.
Это связано с тем, что можно описать только как дефект в System.Web.UI.Util.GetNonPrivateFieldType(Type typeType, String fieldName), который позволяет использовать поля UI (.aspx/.ascx) для компиляции как нечувствительные к регистру, но пытается получить их как чувствительные к регистру во время синтаксического анализа.
В настоящее время потенциальное средство состоит в том, чтобы поймать его во время компиляции с помощью ms-build task.