Utworzyłem projekt biblioteki usług WCF w moim rozwiązaniu i mam odwołania do usług do tego. Korzystam z usług z biblioteki klas, więc oprócz biblioteki klas mam odwołania z mojego projektu aplikacji WPF. Usługi są konfigurowane prosto do przodu - zmieniane tylko w celu uzyskania funkcji usługi asynchronicznej.
Wszystko działało dobrze - dopóki nie chciałem zaktualizować referencji usług. Nie udało się, więc w końcu wycofałem się i spróbowałem, ale nawet wtedy się nie udało! A więc - aktualizacja odwołań do usług kończy się niepowodzeniem bez wprowadzania jakichkolwiek zmian. Czemu?!
Błąd jaki otrzymuję to ten:
Custom tool error: Failed to generate code for the service reference
'MyServiceReference'. Please check other error and warning messages for details.
Ostrzeżenie zawiera więcej informacji:
Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension:
System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: List of referenced types contains more than one type with data contract name 'Patient' in
namespace 'http://schemas.datacontract.org/2004/07/MyApp.Model'. Need to exclude all but one of the
following types. Only matching types can be valid references:
"MyApp.Dashboard.MyServiceReference.Patient, Medski.Dashboard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" (matching)
"MyApp.Model.Patient, MyApp.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" (matching)
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='ISomeService']
Istnieją również dwa podobne ostrzeżenia:
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://tempuri.org/']/wsdl:portType[@name='ISomeService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpBinding_ISomeService']
I to samo dla:
Custom tool warning: Cannot import wsdl:port ..
Uważam, że to wszystko jest mylące ... Nie mam klasy pacjenta na pulpicie nawigacyjnym po stronie klienta, z wyjątkiem tej, którą otrzymałem za pośrednictwem numeru referencyjnego usługi. Więc co to znaczy? I dlaczego nagle się pojawia? Pamiętaj: ja nawet niczego nie zmieniłem!
Teraz rozwiązanie to zostało znalezione tutaj , ale bez wyjaśnienia, co to oznacza. Więc; w „Konfiguruj odwołanie do usługi” dla usługi odznaczam pole wyboru „Ponownie używaj typów w przywoływanych zestawach”. Przebudowa teraz wszystko działa dobrze bez problemów. Ale co tak naprawdę zmieniłem? Czy będzie to miało wpływ na moją aplikację? A kiedy należy to odznaczyć? Chcę ponownie użyć typów, dla których skonfigurowałem DataContract, ale nie więcej. Czy nadal będę mieć dostęp do tych bez zaznaczenia tego?