2012-08-03 48 views
1

我有一個.NET客戶端調用SOAP .asmx Web服務。我正在開發的客戶端本身是.NET 4下的WCF服務。目標.asmx Web服務是應用程序中的服務引用。我無法控制目的地。調用SOAP ASMX Web服務時在根元素中強制命名空間

問題是,在調用Web服務時,爲該調用創建的XML不包含要發送的代理類的序列化XML的根元素中的特定名稱空間。

相反,它爲嵌套在文檔中的少數元素應用名稱空間。

當使用代理類:

無法找到元素「甕架構信息:hl7-

var x = new RemoteService_PortTypeClient(); 
x.SomeMethod(somePayload); 

目標服務時,在整個HL7命名空間格式化返回一個異常組織:V3:TYPEID」。

當前的序列化代理對象(somePayload)來發送的:

<MyRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    .... 
    <MyNode value="20120801100803" xmlns="urn:hl7-org:v3" /> 

我怎麼想它發送:

<MyRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     xmlns="urn:hl7-org:v3"> 
    .... 
    <MyNode value="20120801100803" /> 

我怎麼能強迫我的客戶在根中聲明名稱空間,而不是散佈在元素中?

我知道在根中使用這個命名空間將被服務接受而不會有錯誤,因爲它已經被證明以這種方式工作。

是否有References.cs或web.config或其他強制這個聲明/屬性?

+0

還有一類'XmlSerializerNamespaces'其串行器起飛。你可以在那裏添加。 – Ankush 2012-08-03 20:54:08

+0

@Ankush我正在談論在Service Reference中創建的代理類。這裏沒有明確的序列化。 – 2012-08-03 21:15:37

+0

是的,我明白這一點。但'svcutil.exe'或者其他生成代理類的東西通常需要一些控制檯參數,或許這就是答案。我只是引導你,我不知道答案。 – Ankush 2012-08-03 21:18:48

回答

0

我通過創建Web引用而不是服務引用來解決我自己的問題。

enter image description here