Nie mogę znaleźć przykładu generowania serwerów proxy z plików WSDL z typami współużytkowanymi, ale bez żadnych XSD, aby z nimi współpracować. Czy ktoś może oznaczyć to jako duplikat i wskazać mi przykład?Udostępnianie typów WSDL bez XSD
Oto 2 usługi, z których każda ma własną przestrzeń nazw i typ wspólny. Jedyne, co jest publicznie dostępne, to ich WSDL, nie ma typu XSD ani jego. Dll, który przejdzie na wsdl.exe /sharedtypes
lub svcutils
, a bez niego otrzymam identyczny class Foo
, którego nie mogę przekazać do SetFoo
i .
Najlepszym mogę wymyślić generuje proxy programowo i wykrywanie duplikatów poprzez CodeDOM, ignorując DataContract
/WebServiceBinding
nazw, ale jest to ogromny bałagan ...
[WebService(Namespace = "http://tempuri.org/FOO1")]
public class Service1 : WebService
{
[WebMethod]
public Foo GetFoo()
{
return new Foo();
}
}
[WebService(Namespace = "http://tempuri.org/FOO2")]
public class Service2 : WebService
{
[WebMethod]
public void SetFoo(Foo foo)
{
}
}
public class Foo
{
public int Bar { get; set; }
}
Jako część definicji WSDL znajdują się XSD definiujące typy. Jeśli nie są zdefiniowane w WSDL, w jaki sposób ma się korzystać z usługi? –
@hugh Są one zdefiniowane dwa razy, w każdym pliku WSDL, dlatego też we \ wsdls 'Service1' i' Service2' nie widzę sposobu na wygenerowanie dla nich proxy ze wspólną definicją 'Foo', która może być przekazywana z' GetFoo' na '' SetFoo'. –
Rozumiem. Zobacz moją odpowiedź poniżej –