2009-07-21 50 views
5

Recentemente ho aggiunto alcuni spazi dei nomi al mio file web.config in modo che tutte le mie pagine di aspx possano fare riferimento a varie costanti ed enumerazioni senza la necessità di aggiungere un'istruzione import su ogni pagina aspx. Da quando abbiamo aggiunto questo, stiamo ricevendo un errore quando proviamo a testare un servizio web asmx. Sembra che durante la generazione WSDL otteniamo il seguente errore:Errore di riferimento ambiguo durante la compilazione runtime

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

Mentre la ricerca di questo, ho scoperto che DefaultWsdlHelpGenerator.asmx viene chiamato durante la compilazione runtime e c'è un metodo in là che ha la seguente firma:

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

abbiamo un oggetto definito nel nostro namespace chiamato messaggio che sta causando il riferimento ambiguo in quanto questo file servizio web non è considerato pienamente il loro messaggio.

Come posso risolvere il problema senza rimuovere gli spazi dei nomi da web.config? Abbiamo i nostri servizi Web in un'altra cartella nella nostra directory virtuale, quindi ho provato ad aggiungere un web.config che ha cancellato i namespace ma non sembra funzionare.

Qualsiasi aiuto sarebbe apprezzato. Grazie Kevin

risposta

3

È possibile utilizzare gli alias dello spazio dei nomi nel codice e l'uso che differiscano tra di loro:

using ourOwn=our.own.namespace; 

e si riferiscono alla classe messaggio come ourOwn.Message. Ciò eviterà la collisione.

+1

Si prega di vedere il mio commento che ho lasciato qui sotto. Avrei dovuto chiarire che WriteSoapMessage non è una funzione che ho scritto ma fa parte del framework .net. – Kevin

Problemi correlati