2011-04-26 60 views
2

這可能是一件容易的事情,但我還沒有找到一個可行的方法。更改WebService方法結果名稱

我目前有這樣的輸出一個C#Web服務:

<GetInformationResponse> 
    <GetInformationResult> 
    <Policy> 
    </Policy> 
    </GetInformationResult> 
<GetInformationResponse> 

我需要的是輸出這樣的:

<GetInformationResponse> 
    <InformationResponse> 
    <Policy> 
    </Policy> 
    </InformationResponse> 
<GetInformationResponse> 

我試着在「InformationResponse包裝的一切「對象,但我仍然有封裝它的」GetInformationResult「對象。我基本上需要將「GetInformationResult」重命名爲「InformationResponse」。

謝謝!

ETA:對象/方法信息

[WebMethod] 
public InformationResponse GetInformation(GetInformationRequest GetInformationRequest) 
{ 
    InformationResponse infoSummary = new InformationResponse(); 
    Policy policy = new Policy(); 
    // setting values 

    return infoSummary; 
} 

InformationResponse對象:

[System.Xml.Serialization.XmlInclude(typeof(Policy))] 
public class InformationResponse : List<Policy> 
{ 
    private Policy policyField; 

    /// <remarks/> 
    [System.Xml.Serialization.XmlElementAttribute("Policy", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] 
    public Policy Policy 
    { 
    get 
    { 
     return this.policyField; 
    } 
    set 
    { 
     this.policyField = value; 
    } 
    } 
} 
+0

您可以指定更多的細節。它是一個SOAP服務嗎?你爲什麼關心那些內部? ...? – Achim 2011-04-26 19:35:58

+0

通過WSDL或代碼生成Web服務嗎?我們可以看到哪個人定義了這條消息嗎? – pickypg 2011-04-26 19:36:20

+0

這是一個通過代碼生成的SOAP服務。就我個人而言,我不在乎內部,但管理層已經確定了架構,並且必須與上述內容相匹配。 – Stephanie 2011-04-26 19:42:00

回答

4

通常,使用XmlElementAttribute將允許你重新定義的串行化元素的名稱。但是,在ASMX Web服務中,這似乎不起作用。但是,通過使用WebMethod上的屬性,我能夠產生您正在查找的行爲。試試這個:

[WebMethod] 
[return: System.Xml.Serialization.XmlElementAttribute("InformationResponse")] 
public InformationResponse GetInformation(GetInformationRequest GetInformationRequest) 
{ 
    .... 
} 
+0

我試過,但結果是這樣的:如果我封裝它,結果如下這: Stephanie 2011-04-27 14:29:32

1

你需要的是添加這樣的XmlRoot聲明:

[XmlRoot("MyName")] 
public class MyName 
{}