2009-07-21 6 views
5

J'ai récemment ajouté quelques espaces de noms à mon fichier web.config afin que toutes mes pages aspx puissent référencer diverses constantes et enums sans avoir besoin d'ajouter une instruction d'importation sur chaque page aspx. Depuis que nous l'avons ajouté, nous recevons maintenant une erreur lorsque nous essayons de tester un service Web asmx. Il semble que lors de la génération wsdl nous obtenons l'erreur suivante:Indigène Erreur de référence lors de la compilation

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

Lors de mes recherches, j'ai découvert que DefaultWsdlHelpGenerator.asmx est appelé lors de la compilation d'exécution et il y a une méthode là-dedans qui a la signature suivante:

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

Nous avons un objet défini dans notre espace de noms appelé message qui est à l'origine de la référence ambiguë depuis ce fichier de service Web est pas entièrement assortissent leur message.

Comment puis-je résoudre ce problème sans supprimer les espaces de noms du fichier web.config? Nous avons nos services Web dans un autre dossier de notre répertoire virtuel, j'ai donc essayé d'ajouter un web.config qui a fait un clair sur les espaces de noms, mais cela n'a pas semblé fonctionner.

Toute aide serait appréciée. Merci Kevin

Répondre

3

Vous pouvez utiliser des alias d'espace de noms dans votre code et l'utiliser pour différents entre eux:

using ourOwn=our.own.namespace; 

et adressez-vous à votre classe de message comme ourOwn.Message. Cela permettra d'éviter la collision.

+1

S'il vous plaît voir mon commentaire Je suis parti ci-dessous. J'aurais dû préciser que le WriteSoapMessage n'est pas une fonction que j'ai écrite mais qu'elle fait partie du framework .net. – Kevin

Questions connexes