2016-12-15 26 views
10

Durum şu ki, mevcut bir istemci var, istemciyi tüketecek bir sunucu kurmam gerekiyor. Müşteriye sahip değilim ve değiştirmek için hiçbir pozisyonda değilim. olabilir istemci sabun mesajıC# - WCF'yi herhangi bir Sabun mesaj önekini kabul edin

enter image description here

nasıl hizmet daire içine alınmış alan kodlarının hem kabul yapabilirim izler. Şu anda sadece "c2b" önekini kabul ediyor ve "ns1" öneki ile herhangi bir istekte bulunmuyor.

cevap

4

DTO (Class nesnesi) hizmetine geçiyorsunuz, ancak wcf hizmetiniz tam sınıfı tanıyamıyor. WCF'nin herhangi bir öneki kabul etmesini sağlamak için bu ön eki uygun nesne konumuyla eklemeniz yeterlidir. <soapenv:Envelope>'a bir tane daha xmlns özniteliği eklemeniz gerekiyor.

Ör.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:ns1="http://cps.huawei.com/cpsinterface/c2bpayment" xmlns:c2B="http://cps.huawei.com/cpsinterface/c2bpayment"> 
+0

Hizmetin hangi dosyasında yukarıdakileri ekleyebilirim? –

+0

Lütfen Sabun Mesajını değiştirmek için bu bağlantıya bakın. [Sabun Mesajını Değiştir] (https://cmatskas.com/changing-soap-message-data-and-namespaces-with-c/) –

1

Dürüst olmak gerekirse, burada bir dere olabilirsiniz. Tamamen geçersiz bir SOAP iletisi sağlayan bir istemciniz var; bu, hiç bildirmediği bir ad alanı öneki kullanıyor.

Denemek için zamanım yok, ama ilk düşüncem belki XmlNamespaceDeclarationsAttribute'u kullanıyor olabilir - root C2BPaymentConfirmationRequest sınıfında sağlayabilir ve "ns1" işaretiyle kurucunuza önceden doldurun "http://cps.huawei.com/cpsinterface/c2bpayment". Denemeye değer. Çalışırsa bize bildirin.

2

Shubham Sharma's answer% 100 doğrudur.

Biraz daha fazla açıklama eklemek için, bu önekler, bildirdiğiniz ad alanlarının yalnızca takma adıdır. Hiçbir şey ifade etmiyorlar. Ns1'i önek olarak kullanmak isterseniz, tek yapmanız gereken xmlns: c2b'yi xmlns: ns1 ile değiştirmektir.

Sizin durumunuzda, istemci, isteğin nasıl oluşturulacağını bilmemektedir. Belki de wsdl tabanlı bazı istek oluşturma araçlarını kullanmaları önerilir - örneğin SoapUI.

İlgili konular