2012-11-07 7 views
6

Używam bardzo doskonałych bibliotek servicestack i próbuję wygenerować odniesienie do usługi sieci Web ASP.NET (stary styl nie WCF) z poziomu VS2010 przez mój serwer WSDL - Soap11. Aby ładnie zawinąć usługę WSDL.ServiceStack - generowanie usługi sieci web ASP.NET - kwestia odsyłacza

DTO znajdują się w oddzielnej grupie/przestrzeni nazw (My.WS.DTO) z AppHost/services i postępują zgodnie z konwencją nazewnictwa żądanie/odpowiedź .. kiedy próbuję wygenerować odniesienie za pośrednictwem wizualnego studio, otrzymuję następujące błąd w VS.

Błąd narzędzia niestandardowego: nie można importować usługi/schematu WebService. Nie można zaimportować powiązania "BasicHttpBinding_ISyncReply" z obszaru nazw "http://schemas.servicestack.net/types". Nie można importować operacji "GetMyDetails". Brak elementu "http://schemas.servicestack.net/types:GetMyDetails".

UWAGA: GetMyDetails jest pierwszą usługą, która pojawia się na liście - więc nie sądzę, że to jest problem.

Próbowałem dodać przestrzeń nazw zespołu w pliku AppHost przy użyciu EndpointHostConfig.Instance.WsdlServiceNamespace = "My.WS.DTO"; a to powoduje tylko ten sam błąd generacji (jak wyżej), ale z "My.WS.DTO" zamiast "http://schemas.servicestack.net/types".

Zakładam, że jest to prawdopodobnie jakiś problem z odniesieniami, ale jakiekolwiek wskazówki co do tego, co robię źle, byłyby świetne. okrzyki

+0

Czy możesz podać więcej szczegółów? A także sprawdź, czy WebApi nie ma pakietu Nuget. – kunjee

Odpowiedz

3

Nie wiem, czy to jest jeszcze problem dla ciebie, ale miałem podobny problem i okazało się, że nie był urządzony jeden z moich DTOs z [DataContract] i [DataMember] atrybutów, jak opisano na SOAP Support wiki page. Po dodaniu ich do DTO, zostanie to zadeklarowane w sekcji typów WSDL.

1

Zobacz, jak używać [DataContract (Namespace = "YOUR NAMESPACE")] do swoich DTO. W ten sposób odwoływane są moje obiekty.

[DataContract(Namespace = "My.WS.DTO")] 
public class Account{ 
} 

Używam tego również w moim modelu usługowym. [System.ServiceModel.ServiceContract()] i [System.ServiceModel.OperationContract()]

[System.ServiceModel.ServiceContract()] 
public class SendGetAccountResponseService : IService<SendGetAccountNotification> 
{ 
#region IService implementation 
[System.ServiceModel.OperationContract()] 
public object Execute (SendGetAccountNotification request) 
{ 
    Console.WriteLine ("Reached"); 
    return null; 
} 
#endregion 
} 

Nadzieja to pomaga/rozwiązuje problemu.

1

wiem, jest to stara sprawa, ale musiałem dodać obsługę SOAP na 3rd party, który odmówił poparcia REST niedawno do mojego realizacji ServiceStack więc może to mieć znaczenie dla innych ludzi wciąż mających ten problem.

miałem ten sam problem miałaś:

Unable to import binding 'BasicHttpBinding_ISyncReply'...

I jak mickfold wcześniej odpowiedział, że muszę dodać [DataContract] i [DataMember] do moich definicji klas i ich właściwości.

Ale miałem też dodać następujące do mojego pliku AssemblyInfo.cs zanim błąd odszedł do mnie:

[assembly: ContractNamespace("http://schemas.servicestack.net/types", ClrNamespace = "My Type Namespace")] 

Zakładam, że trzeba będzie jedna z tych linii dla każdej przestrzeni nazw, gdzie trzeba zadeklarowany typ, który w oparciu o pierwotne pytanie powyżej byłby My.WS.DTO.