2012-07-02 18 views
9

sözleşmem görünüyorsa: Bir web hizmeti başvuru alırkenBir WCF web hizmetinde dönüş parametresinin bir çıkış parametresinin sonlandırılmasını nasıl önleyebilirim? aşağıdaki gibi

string DoSomething(int id); 

:

[OperationContract] 
void DoSomething(int id, out string moreInfo); 

bu gibi bakarak sona erer. Parametrelerin sırasının otomatik dönüşümünü etkilemek mümkün mü? Fonksiyon imzasının başlangıcında tüm çıkış parametrelerini bulmak zaten şaşırtıcıydı, ancak bu hala işe yaradı, ama geçersiz yöntemlere devam etmek için geçersiz yöntemler istiyoruz. Yoksa bu bir SOAP sınırlaması mı?

Bir WSDL sınırlama dayalı gibi görünüyor
+1

Bu örnekte, tek bir 'out' parametresi olan bir geçersiz yöntem, doğru dönüş değeriyle etkin olmayan bir geçersiz yöntemdir. Bir 'out' parametresini tanımlamanız, non-out sürümün size vermediğini gösterir? Web servislerinin tasarımında –

+0

@AdamHouldsworth ortogonalliği. Başlangıçta bir değer döndüren hizmetler ve olmayanlar vardı. Ancak, her hizmet durumları iade etmek için yeniden düzenlendi. Ekstra paramı zorlayarak, yapı otomatik olarak başarısız olur ve neyin nerede düzeltileceğini biliriz, ayrıca ilk paramın sözleşmenin geri kalan kısmına bakılmaksızın durumları içeren bir parazit olduğunu daima bilmenin rahatlığıdır. – Abel

+3

Aslında çok şaşırdım ve WCF'nin bu operasyon için bir proxy üretebildiğinden çok etkilendim! Bir 'out' parametresini ilk etapta kullanma mantığı nedir? – MattDavey

cevap

4

: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/48b5992f-f7bd-4b67-8299-514d1780fa9a

WSDL özgün yöntem imzası göstermez; bunun yerine, giriş parametrelerini grup olarak ve çıkış parametrelerini başka bir grubu olarak gösterir.

dışarı parametrelerden dönüş değerleri ayırmak için mümkün olmayan bir sınırlama WSDL bulunmaktadır. Ancak bu, bir void yönteminin sınırlamasının svcutil.exe'nin bir parçası olacağını düşünürdü. İlk çıktıyı bir dönüş değerine taşımaması için svcutil'de bir anahtarın olmamasının hiçbir nedeni yoktur, ancak bu, ms connect'teki bir özellik için bir istek olacaktır.

Sorununuz tutarlı ise, basit bir durum int veya bool döndürebilirsiniz, ancak zaten düzinelerce yönteminiz varsa, bu mükemmel bir yanıt değil eminim.

+1

Birkaç dakika önce aynı bağlantıda bulundum. Gerçekten de, temeldeki WSDL'nin bir kısıtlamasıdır, öyle görünüyor. Sarıcı elbette herhangi bir siparişi kullanabilirdi, ancak bunu zorlamak için bir kullanım durumu göremiyorum. Sınırlamalarla uğraşacağız, o zaman, en azından, şimdilik yeniden yapılandırmayı kolaylaştırmak için bir VoidResponse türü kullanacağız. – Abel

+0

VoidResponse türü hakkında iyi bir fikir. –

İlgili konular