Błąd odniesienia do usługi: nie udało się wygenerować kodu odniesienia do usługi

Mam rozwiązanie usługi Windows i próbuję dodać odniesienie do usługi internetowej Hermes (Opensource ebms Message server) w VS2010.

Mogę znaleźć usługę internetową, używając jej adresu URL, ale kiedy próbuję wypełnić odniesienie do usługi, w Visual Studio dostaję następujące błędy:

Error 8 Custom tool error: Failed to generate code for the service reference 'testService'.  Please check other error and warning messages for details. C:\Users\Admin\documents\visual studio 2010\Projects\MyProject\MyProject.MessageHandler\Service References\testService\Reference.svcmap 1 1 MyProject.MessageHandler


Warning 6 Custom tool warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:portType[@name='EbmsStatusQuery']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:binding[@name='EbmsSoapHttpStatusQuery'] C:\Users\Admin\documents\visual studio 2010\Projects\MyProject\MyProject.MessageHandler\Service References\testService\Reference.svcmap 1 1 MyProject.MessageHandler

Warning 7 Custom tool warning: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:binding[@name='EbmsSoapHttpStatusQuery']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:service[@name='EbmsMessageStatusQuery']/wsdl:port[@name='EbmsStatusQuery'] C:\Users\Admin\documents\visual studio 2010\Projects\MyProject\MyProject.MessageHandler\Service References\testService\Reference.svcmap 1 1 MyProject.MessageHandler

Warning 5 Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.XmlSerializerMessageContractImporter
Error: Schema with target namespace 'http://service.ebms.edi.cecid.hku.hk/' could not be found.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:portType[@name='EbmsStatusQuery'] C:\Users\Admin\documents\visual studio 2010\Projects\MyProject\MyProject.MessageHandler\Service References\testService\Reference.svcmap 1 1 MyProject.MessageHandler
Niektóre badania sugerują, że to zasługa svcutila.exe nie był w stanie zbudować proxy z powodu braku uprawnień do katalogu (prawdopodobnie c:\windows\temp). Mam próbowałem przypisać różne uprawnienia dostępu, ale nie jestem pewien, który użytkownik potrzebuje tego uprawnienia, lub czy jest to tylko red herring. Wszelkie pomysły będą mile widziane.

Thanks

Author: Darren, 2010-10-20

13 answers

Trzeba odznaczyć typy ponownego użycia we wszystkich odwołanych złożeniach z opcji Configure Service reference

Sprawdź szczegóły

 285
Author: smhnkmr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-22 08:53:46

Kliknij prawym przyciskiem myszy odniesienie do usługi i wybierz Configure Service Reference...

Konfiguracja Referencji Serwisowej

Następnie odznacz Reuse types in referenced assemblies

Typy Ponownego Użycia

Kliknij OK, wyczyść i Przebuduj rozwiązanie.

 118
Author: Darren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-17 14:58:42

Napotkałem również podobny błąd podczas próby wygenerowania klienta dla usługi internetowej z projektu ASP. net MVC 4.0 przy użyciu Visual Studio 2012.

Źródłem problemu wydaje się fakt, że projekt, z którego próbowałem wygenerować klienta, odnosił się do zestawu, który z kolei był zależny od innego zestawu, który nie był również odwoływany.

Gdy w konfiguracji usługi włączona jest opcja "ponowne użycie typów w odwołanych zespołach", usługa generator prawdopodobnie sprawdza wszystkie wymienione zespoły, aby uzyskać listę typów, które mogą być ponownie użyte. Fakt, że jeden z odwołanych zestawów odnosi się do innego zestawu, który nie jest dostępny, prawdopodobnie powoduje awarię generatora.

Odznaczenie "typy ponownego użycia w odwołanych złożeniach" z konfiguracji usługi rozwiąże powyższy problem , ale jest to efekt uboczny. opcja typy ponownego użycia istnieje nie bez powodu i w niektórych przypadkach unika niepotrzebnego wstawiania kodu do serwisu.

Na przykład, jeśli sama usługa jest zbudowana przy użyciu WCF i niektóre parametry metod wewnątrz niej są typu System.Guid, zostaną one przetłumaczone na ciągi w wygenerowanym Kliencie, jeśli opcja typy ponownego użycia jest wyłączona.

Alternatywą, którą preferuję do wyłączenia ponownego użycia typów, jest dodanie referencji usługi z projektu biblioteki klas specjalnie stworzonego w tym celu. Należy pamiętać o tym, aby skopiuj wszystkie konfiguracje związane z usługą z aplikacji biblioteki klas.config do pliku konfiguracyjnego projektu startowego.

Jeśli istnieją typy zdefiniowane w lokalnych zespołach, które muszą być ponownie użyte w kliencie usługi, zespoły te muszą być po prostu odwołane z wyżej wymienionego projektu biblioteki klas, wraz ze wszystkimi ich zależnościami.

 16
Author: Florin Dumitrescu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-01 00:26:45

Http://uliasz.com/2011/06/wcf-custom-tool-error-failed-to-generate-code-for-the-service-reference/#comment-1647

Dzięki artykułowi powyżej.

W moim przypadku mam taki problem z moim projektem WPF w VS.Net 2008. Po przejrzeniu tego artykułu zdałem sobie sprawę, że montaż używany w serwisie internetowym jest inną wersją montażu używanego na kliencie.

To działa dobrze po aktualizacji assembly na kliencie.

 3
Author: user2144589,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-07 14:09:55

Byłoby niezwykle trudno odgadnąć problem, ponieważ jest on spowodowany błędem w WSDL i bez zbadania WSDL, nie mogę skomentować znacznie więcej. Więc jeśli możesz podzielić się swoim WSDL, proszę to zrobić.

Mogę tylko powiedzieć, że w WSDL (z docelową przestrzenią nazw 'http://service.ebms.edi.cecid.hku.hk/'). wiem o problemach i różnej obsłudze schematu, gdy instrukcje include są ignorowane.

Ogólnie znalazłem Implementacja usług internetowych przez Microsoft jest całkiem dobra, więc myślę, że serwis internetowy odsyła podejrzane WSDL.

 1
Author: Aliostad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-20 12:19:37

[[0]} dostaję ten sam błąd w Silverlight 5 (VS2012)

Możesz także usunąć odniesienia do:

  • System.ServiceModel.DomainServices.Client
  • System.ServiceModel.DomainServices.Klient.Web

Po zaktualizowaniu odniesień do usługi, pamiętaj, aby dodać je z powrotem.

 0
Author: CartoJunkie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-01 06:07:00

Jak wspomniano powyżej, istnieje kilka różnych problemów możliwych. Znaleźliśmy to .Biblioteka DLL dla WCF została dodana jako odniesienie do projektu klienta. To z kolei powodowało problemy z rozwiązywaniem obiektów i tym samym powodowało "opróżnianie" plików przez etapy generowania kodu. Podczas odznaczania use " typy ponownego użycia..."może wydawać się odpowiedzią, tworzy dodatkowe definicje typów obiektów, które są proxy do rzeczywistych typów, w nowej przestrzeni nazw, co powoduje wszystkie rodzaje problemów "kompatybilności" z użyciem tych typów. Tylko jeśli naprawdę chcesz "ukryć" Typ należy zaznaczyć tę opcję.

Ukrywanie typu byłoby właściwe, jeśli nie chcesz, aby zależność typu "DLL" "wyciekła" do projektu, który próbujesz zachować oddzielony od innego. Jeśli DLL dla projektu biblioteki WCF wkrada się do referencji projektu klienta, wtedy będziesz miał ten problem z wszelkiego rodzaju dziwnych efektów ubocznych, ponieważ definicje typu są również w DLL.

 0
Author: Grwon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-17 16:37:55

Napotkać ten sam problem, rozwiązany przez uruchomienie Visual Studio w trybie Admin

 0
Author: Prashant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-09 21:41:14

Napotkałem ten problem podczas aktualizacji rozwiązania VS2010 WCF+Silverlight w VS2015 Professional . Oprócz automatycznej aktualizacji z Silverlight 4 do Silverlight 5, wartość pola wyboru service reference reuse została zmieniona i generacja nie powiodła się.

 0
Author: Alexei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-22 16:02:32

"typy ponownego użycia" nie zawsze stanowią problem w przypadku wystąpienia tego błędu.

Podczas dodawania odniesienia do starszej usługi, kliknij "Zaawansowane", a tam "Dodaj odniesienie internetowe". Teraz link do twojego wsdl i wszystko powinno działać.

 0
Author: FrankyHollywood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-13 11:37:12

Miałem ten problem podczas próby aktualizacji referencji do usługi (błąd pojawia się tylko podczas dodawania referencji do usługi), ale nie chciałem usuwać pola wyboru ponownego użycia zestawu.

Zadziałało dla mnie tak:

  • Usuń zestaw, który chciałem ponownie wykorzystać
  • Update Service reference
    • Zachowaj "typy ponownego użycia w określonych odwołanych zespołach"
    • Ignoruj błędy, to dlatego, że odniesienie jest zaginął!
  • Dodaj ponownie odniesienie do montażu, aby naprawić błędy
  • zaktualizuj ponownie odniesienie do usługi

Voila, teraz faktycznie aktualizuje i nie próbuje usunąć całego wygenerowanego kodu.

Byłem prawie gotowy zrezygnować z funkcji typów ponownego użycia...

 0
Author: Shahin Dohan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-18 10:17:30

Jeśli chcesz to poprawić bez odkręcania pola wyboru ponownego użycia zestawu, to działa dla mnie:

  • Usuń odwołany zespół, który chcesz ponownie użyć
  • Usuń cały folder bin projektu
  • Update Service reference
    • Zachowaj "typy ponownego użycia w określonych odwołanych zespołach"
  • Dodaj ponownie odniesienie do assembly, aby naprawić błędy
  • zaktualizuj ponownie odniesienie do usługi
 0
Author: popiandro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-05 08:11:00

Ponowne uruchomienie Visual Studio pomogło mi. Używam VS 2015.

 0
Author: CodingYoshi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-05 21:22:37