2009-11-03 11 views
10

Używam programu Visual Studio 2008 i mam klienta WCF działającego przeciwko usługa WCF. Oba znajdują się w tym samym rozwiązaniu Visual Studio. Po dokonaniu zmiany w mojej umowie WCF, chcę zaktualizować referencję usługi na kliencie, aby zmiany dokonane w umowie zostały również dokonane w proxy.Aktualizacja odwołania do usługi nie działa

Mój problem polega na tym, że kod proxy nie jest ponownie generowany.

Kiedy wybrać zaktualizować odniesienie usług, dodaje się dzieje:

  1. dialogowe z tytułem „odniesienie usługa Aktualizacja«nazwa-of-reference»” jest pokazany. To okno ma pasek postępu.
  2. porusza Postępu i tekst statusu w oknie dialogowym zostanie zmieniony na „Aktualizowanie konfiguracji”
  3. ProgressBar porusza się nieco więcej, a tekst jest status chnaged do „zmiana konfiguracji kompletna”

dialogowym nie wyświetla tekstu "Generowanie \ coś \" (nie pamiętam dokładnego sformułowania), który wyprawiłbym.

Po usunięciu odwołania do usługi i dodaniu go ponownie, serwer proxy jest prawidłowo generowany. Dodaję usługę przy użyciu dokładnie tych samych ustawień co poprzednio, więc nie sądzę, że jest to problem, który mogę rozwiązać, zmieniając konfigurację odniesienia usługi na kliencie.

Podejrzewam, że problemem może być zmiana domyślnego wsHttpBindings w pliku app.config. Zmieniłem także nazwę domyślnych punktów końcowych. Powodem tego jest to, że potrzebuję więcej niż jednego punktu końcowego i posiadanie jednego o nazwie "some-default-name" i jednego z moim własnym nazwiskiem jest po prostu mylące.

Problem z usunięciem usługi i ponownym jej dodaniem polega na tym, że Visual Studio dodaje nowe powiązanie w app.config (między innymi), które nie powinno tam być.

Ktoś widział ten problem wcześniej? Ktoś wie o rozwiązaniu tego problemu?

Odpowiedz

6

Kiedy mieliśmy ten problem był zwykle jednym z tych błędów:

  • Wielkość zamówienia wzrosła, a obecnie jest tak duża, że ​​konfiguracja WCF nie zezwala na to, aby zostać przeniesiona.
  • Nowa klasa została dodana do interfejsu WCF i ta klasa nie jest oznaczona jako możliwa do serializacji.
  • Jest to błąd, który zatrzymuje kompilacji kodu z budowy i dlatego używa starej dll
+8

Niestety, żadna z tych rzeczy nie dotyczy mnie. Po usunięciu odwołania i dodaniu go ponownie działa dobrze. Jeśli umowa była tak duża lub wystąpiły jakiekolwiek błędy w kontrakcie WCF, nie działałaby po operacji usuwania/dodawania. – Nitramk

1

Moim problemem było to, że miał dwóch metod o tej samej nazwie. Wszystko w porządku, ale nie mogłem zaktualizować odwołania do usługi. Kiedy próbowałem uruchomić tylko usługę WCF, pojawia się błąd.

+0

Miałem również ten problem. Kompilator nie narzeka podczas tworzenia projektu usługi, ale odwołanie do usługi w projekcie konsumenckim nie zostanie zaktualizowane. Zauważyłem, że jeśli "twoja usługa została hostowana" nie pojawia się przy aktualizacji, to aktualizacja również nie zadziała. –

1

Mój błąd polegał na tym, że zapomniałem dodać atrybutu OperationContract.

+0

Łatwo tego przegapić. –

3

W moim przypadku problem polegał na tym, że poprzedni programista dodał odwołanie do usługi przy użyciu swojej nazwy komputera zamiast localhost. Więc kiedy powiedziałem Visual Studio, aby zaktualizować, to połączył się z jego komputerem, który nie miał zmian. Zmodyfikowałem pliki referencyjne usługi i zamieniłem jego nazwę komputera na localhost i udało mi się zaktualizować odniesienie.

5

Zabrakło mi do tego problemu z następującymi warunkami:

  1. Nasze stacje są podłączone do domeny Active Directory (prawie wszystko używa uwierzytelniania systemu Windows)
  2. Odniesienie usługa Próbuję aktualizacja jest hostowana na localhost i działa w IIS Express (więc użytkownik aplikacji jest uruchomiony jako konto użytkownika osobistej domeny programisty)
  3. Inny programista dodał lub zaktualizował odniesienie do projektu niedawno ode mnie.

Jedyny sposób, w jaki zorientowałem się, jak obejść ten problem, to edytować plik configuration.svcinfo dla tego odniesienia do usługi (musisz pokazać wszystkie pliki projektu, aby zobaczyć go w visual studio), zlokalizować następującą sekcję:

userPrincipalName value="[email protected]" 

i zmienić użytkownika na mojego użytkownika domeny. Po zapisaniu pliku nie mam problemu z aktualizowaniem odwołania, dopóki inny programista nie zaktualizuje odwołania do usługi (prawdopodobnie przy użyciu tego samego obejścia). Niestety, nie byłem w stanie znaleźć stałego rozwiązania tego problemu.

+0

Pracowałem dla mnie. Wielki człowiek!! Dzięki. – Mayeed

0

wiem, że to rozwiązanie jest trochę późno, ale po wypróbowaniu zamieszczone rozwiązania bez powodzenia, to działało:

Podczas tworzenia WebService, generuje plik .dll, które odniesienia jako odniesienia serwisu. Ten .dll jest (jak wiadomo) nie odtwarzany za każdym razem, gdy wprowadzasz zmiany w pliku .SVC. Możesz to zobaczyć, jeśli przejdziesz i zobaczysz zmodyfikowaną właściwość pliku dll usługi internetowej, w moim przypadku było to trzy godziny!

Moje rozwiązanie polegało na wprowadzeniu odpowiednich zmian w kontakcie z usługą, zapisaniu go i ponownym utworzeniu projektu, co spowoduje odtworzenie wszystkich plików .dll odzwierciedlających zmiany dokonane w pliku kontaktu usługi (.svc).

Następnie zaktualizuj odwołanie do usługi w aplikacji klienckiej, a zmiany są widoczne.

  • Spades
1

podświetlić usługę jako aktywnego projektu, F5, aby uruchomić go w VisualStudio, będzie można go uruchomić w aplikacji testowej usługi. Przestań debugować. Następnie spróbuj zaktualizować referencje do usługi - dla mnie.

+0

To działało dla mnie, kliknięto prawym przyciskiem myszy plik .svc, kliknęło Przeglądaj z, wybrane IE. Zamknął stronę, a następnie zaktualizował odniesienie i zadziałało. Neill – Neill

1

Dwa proste kroki, aby rozwiązać ten:

  1. Run Service, a następnie zatrzymać go.

  2. Zaktualizuj numer referencyjny usługi.

1

Miałem również ten problem. Usunięto odniesienie do usługi i ponownie utworzono.

+0

Wystarczy dodać, jeśli ktoś napotka na mój problem. Usunięcie z Visual Studio nie działa dobrze, musiałem usunąć zarówno z VS, a następnie z eksploratora plików. – omerts

0

Miałem ten sam problem. Zmodyfikowano niektóre umowy danych. Próbowałem "Aktualizuj referencję usługi" i nie widziałem zmiany. Usunięto i ponownie dodano usługę. Nadal nie widziałem zmiany podczas pisania kodu w kliencie. Otworzyłem mojego klienta z Reflectorem i zobaczyłem, że typy usług miały tę zmianę! Dlaczego więc intellisense wciąż pokazuje stare właściwości?Restarted Visual Studio i modyfikacje ostatecznie pokazane w intellisense.

0

miałem ten sam problem, to według mnie było to spowodowane przez GIT Merge Conflict, brakowało mi następujący kod z mojego pliku csproj

<ItemGroup> 
    <None Include="Service References\<SERVICE NAME>\Reference.svcmap"> 
     <Generator>WCF Proxy Generator</Generator> 
     <LastGenOutput>Reference.cs</LastGenOutput> 
    </None> 
    </ItemGroup> 

Dodałem ten onder linii Reference.svcmap

0

Innym rozwiązaniem tego rodzaju problemów jest sytuacja, w której przestrzenie nazw są pomieszane w projektach, do których odwołują się obie usługi. Więc:

Projecta - Zużywa ServiceA

ProjectB - Zużywa ServiceA, Ma Odniesienia do Projecta

Jeżeli zmienisz ServiceA i aktualizować ProjectB, czasami nazw może mogą zmienić spojrzenie na wersji Projecta za usługi.

Powiązane problemy