2011-10-04 9 views
8

Próbuję korzystać z usługi WCF 4.0 w mojej aplikacji. Zbudowałem, przetestowałem i wdrożyłem usługę od podstaw. Usługa działa w kliencie testowym WCF i może być wykorzystana w każdym innym projekcie testowym, który zbudowałem. Problemem jest ta jedna konkretna aplikacja ... jedyna, która ma znaczenie, ponieważ to jest powód, dla którego zbudowałem usługę.Błąd podczas korzystania z usługi: Nazwa typu "AAA" nie istnieje w typie "YYY.RRR"

Kiedy buduję aplikację po odwołaniu się do usługi, pojawia się błąd. Błąd jest następujący: "Nazwa typu" AAA "nie istnieje w typie" RRRRRRR "".

Projekt zużywający usługę nosi nazwę "YYY.Web" i znajduje się w przestrzeni nazw "YYY".

Usługa została początkowo utworzona w przestrzeni nazw "YYY.ReportingService". Został zmieniony na inny obszar nazw po rozpoczęciu tego problemu. Jest teraz w przestrzeni nazw "MMM".

Dodałem dyrektywę "YYY.Service1". Próbowałem również aliasowanie dyrektywy using (używając testu = YYY.Service1)

Aby upewnić się, że coś nie zostało pomieszane z moją usługą i jej przestrzeniami nazw, zbudowałem nową usługę za pomocą jednej metody. Przyjmuje parametr łańcuchowy i zwraca "Hello" i dowolny łańcuch jest przekazywany. Usługi te działają również w kliencie testowym WCF i kilku projektach testowych, które stworzyłem. Ta usługa znajduje się w przestrzeni nazw SimpleTestService, klasa BasicService, o metodzie o nazwie GetGreeting. Nazewnictwo zostało zrobione celowo, aby uniknąć ewentualnych kolizji nazw. Błąd nadal występuje w przypadku tej nowej usługi.

Jakieś przemyślenia na ten temat? Dzięki!

Odpowiedz

0

Czy masz starą wersję biblioteki DLL usługi w GAC? Twoja aplikacja może odwoływać się do innej wersji zestawu, stąd brakujące typy.

+0

Nie.Druga usługa wygenerowała ten sam błąd, z wyjątkiem innego typu nieistniejącego w typie YYY.YYY po zestawieniu za pierwszym razem. – user978467

0

Mam nadzieję, że zaktualizowałeś odwołanie do usługi po zmianie nazwy obszaru nazw w usłudze. Zazwyczaj pojawia się ten błąd, gdy serwer proxy po stronie klienta nie jest aktualizowany najnowszymi typami z serwera. Możesz spróbować zaktualizować referencję do usługi.

+0

Tak, odniesienie zostało zaktualizowane. Ten problem wystąpił podczas pierwszego kompilowania po odwołaniu się do usługi. I ten sam problem wystąpił w przypadku drugiej usługi. – user978467

0

Zdaję sobie sprawę, że to stare i stare pytanie, ale właśnie miałem ten problem, a problemem był konflikt przestrzeni nazw.

W moim przypadku AAA został nazwany ServiceClient i wygenerował ten sam błąd, którego doświadczyłeś. Po usunięciu konfliktu przestrzeni nazw (nazywanego w zamian ConsoleClient) wszystko działało zgodnie z oczekiwaniami.

19

Zajęło mi to trochę czasu. Okazało się, że "The type name 'AAA' does not exist in the type 'YYY.YYY' " zostało spowodowane przez YYY.YYY - moją nazwę udostępniania klasy konsumującej z jej zawartą przestrzenią nazw.

Rozwiązanie: zmień nazwę klasy konsumenta na coś, co nie jest równe pełnej nazwie obszaru nazw, tj. YYY.XXX.

+1

Dzięki, to też był mój problem! –

1

Mam inny problem. Wyobraź sobie dwa projekty z różnych nazw i następujące klasy

Projektu 1

[DataContract(Namespace="SomeNamespace")] 
public class A 
{ 
    [DataMember] 
    public class B { get; set; } 
} 

Projekt 2

// Here no DataContract attribute 
public class B 
{ 
    //... 
} 

W tym przypadku dostaniesz ten sam błąd jak wyżej. Mam nadzieję, że to pomoże komuś.

+0

Dokładnie, jeśli umowa odwołuje się do typu niepochodzących, który nie ma również [DataContract], rzuci to bardzo tajemniczy i błędny błąd. : P –

Powiązane problemy