2010-11-25 13 views
5

私は、次のコードを持っている:.NET/ASMXでWebServiceのレスポンスのタグ名を変更するには?

<wsdl:types> 
    <s:schema elementFormDefault="qualified" targetNamespace="mynamespace"> 
     <s:element name="request" type="tns:setConfigurationRequest" /> 
     <s:complexType name="setConfigurationRequest"> 
     <s:sequence> 
      <s:element minOccurs="0" maxOccurs="unbounded" form="unqualified" name="transactions" type="tns:transaction" /> 
      <s:element minOccurs="1" maxOccurs="1" form="unqualified" name="turnOnMode" type="s:boolean" /> 
      <s:element minOccurs="1" maxOccurs="1" form="unqualified" name="turnOffMode" type="s:boolean" /> 

     </s:sequence> 
     </s:complexType> 
     <s:complexType name="transaction"> 
     <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" form="unqualified" name="idCC" type="s:string" /> 
      <s:element minOccurs="1" maxOccurs="1" form="unqualified" name="idTrans" type="s:int" /> 
      <s:element minOccurs="1" maxOccurs="1" form="unqualified" name="startTime" type="s:long" /> 
      <s:element minOccurs="1" maxOccurs="1" form="unqualified" name="state" type="s:int" /> 
     </s:sequence> 

     </s:complexType> 
     <s:element name="setConfigurationResult" type="tns:setConfigurationResponse" /> 
     <s:complexType name="setConfigurationResponse"> 
     <s:sequence> 
      <s:element minOccurs="0" maxOccurs="unbounded" form="unqualified" name="return" type="tns:transaction" /> 
     </s:sequence> 
     </s:complexType> 
... 
</s:schema> 
</wsdl:types> 

は、なぜそれがsetconfigurationResultに名前setConfigurationResponseを変更している:それは、次のWSDLを生成

[System.Diagnostics.DebuggerStepThroughAttribute()] 
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] 
    [System.ServiceModel.MessageContractAttribute(WrapperName = "setConfigurationResponse", WrapperNamespace = "mynamespace", IsWrapped = false)] 
    public partial class setConfigurationResponse 
    { 

     [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "mynamespace", Order = 0)] 
     [System.Xml.Serialization.XmlElementAttribute("return", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] 
     public transaction[] @return; 

     public setConfigurationResponse() 
     { 
     } 

     public setConfigurationResponse(transaction[] @return) 
     { 
      [email protected] = @return; 
     } 
    } 

namespace WebService1 
{ 
    [System.Web.Services.WebService(Namespace = "mynamespace", 
       Name = "ControlModuleService")] 
    [System.ComponentModel.ToolboxItem(false)] 
    [System.Web.Services.WebServiceBindingAttribute(Name = "ControlModulePort"), 
    SoapDocumentService(SoapBindingUse.Literal,SoapParameterStyle.Bare)] 

    public class Service1 : CommandCenter 
    { 

     [WebMethod, SoapDocumentMethod(
     ResponseElementName = "setConfigurationResponse")] 
     public setConfigurationResponse setConfiguration(setConfigurationRequest request) 
     { 

      return new setConfigurationResponse(); 
     } 
} 

タイプ? どうすれば変更できますか?

答えて

6

見つけて、複雑で曖昧だったほど単純だった:右クラスの定義上記

に...

[System.Diagnostics.DebuggerStepThroughAttribute()] 
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] 
    [System.ServiceModel.MessageContractAttribute(WrapperName = "setConfigurationResponse", WrapperNamespace = "mynamespace", IsWrapped = false)] 
    [XmlRoot(DataType = "setConfigurationResponse", ElementName = "setConfigurationResponse")] 
    public partial class setConfigurationResponse 
    { 

     [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "mynamespace", Order = 0)] 
     [System.Xml.Serialization.XmlElementAttribute("return", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] 
     public transaction[] @return; 

     public setConfigurationResponse() 
     { 
     } 

     public setConfigurationResponse(transaction[] @return) 
     { 
      [email protected] = @return; 
     } 
    } 

と最終的に得られる

[XmlRoot(DataType = "setConfigurationResponse", ElementName = "setConfigurationResponse")] 

... :)

<s:element name="setConfigurationResponse" nillable="true" type="tns:setConfigurationResponse"/> 
− 
<s:complexType name="setConfigurationResponse"> 
− 
<s:sequence> 
<s:element minOccurs="0" maxOccurs="unbounded" form="unqualified" name="return" type="tns:transaction"/> 
</s:sequence> 
</s:complexType> 
+0

この投稿を回答としてマークしてください! – decyclone

+0

StackOverFlowで私がそれを可能にするまで、さらに2日待たなければならない:( –

1
[XmlRoot(DataType = "setConfigurationResponse", ElementName = "setConfigurationResponse")] 
[System.Diagnostics.DebuggerStepThroughAttribute()] 
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] 
    [System.ServiceModel.MessageContractAttribute(WrapperName = "setConfigurationResponse", WrapperNamespace = "mynamespace", IsWrapped = false)] 
    [XmlRoot(DataType = "setConfigurationResponse", ElementName = "setConfigurationResponse")] 
    public partial class setConfigurationResponse 
    { 

     [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "mynamespace", Order = 0)] 
     [System.Xml.Serialization.XmlElementAttribute("return", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] 
     public transaction[] @return; 

     public setConfigurationResponse() 
     { 
     } 

     public setConfigurationResponse(transaction[] @return) 
     { 
      [email protected] = @return; 
     } 
    } 
関連する問題