c# - Error de tiempo de ejecución de ASP.NET: coincidencia ambigua encontrada
web-applications asp.net-2.0 (6)
¿Puede aparecer debido a diferentes nombres de componentes? por ejemplo, Button1 y button1, se compila como sensible a mayúsculas y minúsculas, pero ejecutado como sensible a mayúsculas y minúsculas.
Recientemente, mi equipo convirtió el proyecto ASP.NET de .NET 1.1 a .NET 2.0. Todo está bastante bien hasta ahora, excepto por una página web.
Este es el mensaje de error que recibí cuando intenté abrir esta página:
Error del servidor en la aplicación ''/''.
Descripción del error del analizador: Se produjo un error durante el análisis de un recurso requerido para atender esta solicitud. Revise los siguientes detalles específicos del error de análisis y modifique su archivo de origen de manera apropiada.
Mensaje de error del analizador: Se ha encontrado una coincidencia ambigua.
Error de fuente:
Línea 1: <% @ Control Language = "c #" AutoEventWireup = "false" Codebehind = "Template.ascx.cs" Inherits = "eReq.Web.WebControls.Template.Template" TargetSchema = "http://schemas.microsoft. com / intellisense / ie5 "%> Línea 2: Línea 3: función ExpandCollapse_Template (inBtn, inSection, inSectionID) {
Archivo de origen: /WebControls/Template/Template.ascx
Línea 1-------------------------------------------------- ------------------------------ Información de la versión: Microsoft .NET Framework Version: 2.0.50727.3053; Versión de ASP.NET: 2.0.50727.3053
Intenté renombrar la clase y renombrar el nombre del archivo pero no funcionó.
Alguien tiene alguna idea sobre esto?
Esto se debe a lo que solo se puede describir como un defecto en System.Web.UI.Util.GetNonPrivateFieldType (Type classType, String fieldName) que permite que los campos de UI (.aspx / .ascx) se compilen como sensibles a mayúsculas y minúsculas pero se intenta recuperar como sensibles a mayúsculas y minúsculas durante el análisis inicial.
Un remedio potencial por el momento es atraparlo en tiempo de compilación con una onpreinit.com/2009/09/ambiguous-match-found_30.html .
La respuesta seleccionada parece ser la correcta.
En mi caso, encontré que estoy usando una variable en el código de identificación con el mismo nombre que un control en el archivo aspx, solo que con un uso diferente del caso.
Tengo el mismo problema y se resolvió y la solución está en comprobar su código detrás y encontrará un par de Controles con el mismo nombre:
protected Button Home;
protected System.Web.UI.HtmlControls.HtmlAnchor home;
Tienes que borrar una línea o comentarla.
Yo rastrearía su web.config para las referencias 1.1 y 2.0 a la misma DLL. En la mayoría de los casos que obtuve esto fue System.Web.Extensions.
También puedes ver los registros @ en las páginas si eso falla.
Buena suerte (¡no es un error divertido de encontrar!)
Dan
En su archivo ASCX, vaya a través de todos y cada uno de los controles y cambie su id. Por ejemplo,
<asp:TextBox id="foo" />
cambiarlo a
<asp:TextBox id="foo1" >
Es probable que tenga un control con una ID que coincida con una propiedad en su archivo ascx, por lo que cuando el compilador está tratando de hacer que las variables de instancia sean colisionadas.