2009-07-21 7 views
5

Recientemente agregué algunos espacios de nombres a mi archivo web.config para que todas mis páginas aspx puedan hacer referencia a varias constantes y enumeraciones sin la necesidad de agregar una instrucción de importación en cada página aspx. Desde que añadimos esto, ahora recibimos un error al intentar probar un servicio web de asmx. Parece ser que durante la generación WSDL obtenemos el siguiente error:Error de referencia ambiguo durante la compilación en tiempo de ejecución

CS0104: 'Message' is an ambiguous reference between 'System.Web.Services.Description.Message' and 'InsTech.ForeSight.Message'

Durante la investigación de esto, descubrí que DefaultWsdlHelpGenerator.asmx se llama durante la compilación en tiempo de ejecución y no hay un método en el que no tiene la firma siguiente:

void WriteSoapMessage(MessageBinding messageBinding, Message message, bool soap12) { 

tenemos un objeto definido en nuestro espacio de nombres llamado mensaje que está causando la referencia ambigua ya que este archivo de servicio web deje de tener plenamente su mensaje.

¿Cómo puedo resolver esto sin eliminar los espacios de nombres de la web.config? Tenemos nuestros servicios web en otra carpeta en nuestro directorio virtual, así que intenté agregar un web.config que dejara en claro el espacio de nombres, pero que no parecía funcionar.

Cualquier ayuda sería apreciada. Gracias Kevin

Respuesta

3

Usted puede utilizar alias de espacio de nombres en el código y el uso que difieran entre ellos:

using ourOwn=our.own.namespace; 

y se refieren a la clase de mensaje como un ourOwn.Message. Eso evitará la colisión.

+1

Por favor, vea mi comentario que dejé a continuación. Debería haber aclarado que WriteSoapMessage no es una función que escribí, sino que es parte del framework .net. – Kevin

Cuestiones relacionadas