2012-12-31 12 views
5

Projekt jest standardową aplikacją, która komunikuje się z wewnętrzną usługą WCF. Nasza aplikacja ASP.NET MVC odwołuje się do kilku zewnętrznych bibliotek, w tym do popularnej biblioteki JSON.NET.Dziwna kwestia podczas dodawania odwołania do usługi do projektu z biblioteką JSON.NET, do której odwołuje się

Problem występuje tylko wtedy, gdy biblioteka JSON.NET jest odniesieniem w projekcie. Próbowałem odtworzyć ten problem za pomocą projektu WebForms i projektu Windows Forms, i to samo się dzieje.

Dodając odwołanie obsługę naszych usług WCF i JSON.NET jest odniesienie w naszym projekcie, buduje odniesienie usługa tak:

Z Json.NET wskazanej w projekcie - zauważył Request/Klasy reakcji i dziwne właściwości jak ID1 i IdSpecified

With JSON.NET

ale usunięcie odniesienia do Json.NET i aktualizowanie odniesienie usług buduje drogę chcemy coś takiego:

Bez Json.NET odwoływać w projekcie

Without JSON.NET

...

Co w świecie spowodowałoby to? W projekcie WCF nie ma odniesienia do JSON.NET, więc bardzo wątpię, że może tam być jakiś miks.

Niektóre informacje, które mogą pomóc:

  • Próbowano sprawdzenie różnych opcji w oknie dialogowym Odniesienia usługi dodatkowe, takie jak „typów ponownego użycia w zespołach przywoływanych” - ale to samo dzieje
  • Visual Studio 2010
  • Usługa WCF korzysta z Entity Framework dla dostępu do danych
+0

Widziałem podobny problem [tutaj] (http://stackoverflow.com/questions/12918062/404-error-when-trying-to-execute-web-service/12921319). Jeśli używasz Newtonsoft.json.dll, możesz usunąć i dodać usługę sieciową poprawnie? Czy możesz również przejść do usługi sieciowej i znaleźć klucz wsdl? –

+0

Tak, usunięcie odwołania do JSON.NET, a następnie dodanie odwołania do usługi działa poprawnie. I tak, wsdl jest tam, jak powinno być. –

Odpowiedz

0

Po dodaniu odwołania do usługi, funkcja WCF domyślnie będzie ponownie użyj klas ze swoich zestawów, które pasują do tych, które zostaną wygenerowane w inny sposób.

Dzieje się tak, ponieważ na przykład możesz utworzyć zarówno usługę, jak i klienta, a możesz chcieć mieć bibliotekę klas ze wszystkimi klasami wymienionymi w obu projektach. Zapewnia to także użycie domyślnych typów .NET (takich jak tablice, listy, DateTime).

Możesz zmienić to domyślne zachowanie takiego:

  1. Kliknij przycisk Zaawansowane po wybraniu opcji „Dodaj odwołanie serwisowy”

  2. wybierz „typy ponownego użycia w określonych odwołuje zespołów”

  3. Sprawdź wszystkie zespoły, z wyjątkiem tych, których nie chcesz, aby użyć

Należy zauważyć, że jeśli nie sprawdzi się złożeń systemu, otrzyma się nowy typ wygenerowany w pliku proxy dla każdego typu .NET (podobnie jak tablice, listy).

Powiązane problemy