Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Thema bezieht sich auf eine veraltete Technologie. XML-Webdienste und XML-Webdienstclients sollten nun mithilfe der folgenden Technologie erstellt werden: Windows Communication Foundation.
Für eine allgemeine SOAP-Textformatierung (oder einen allgemeinen Stil) stellt WSDL (Web Services Description Language) zwei Auswahlmöglichkeiten bereit: RPC und document. .NET Framework steuert diese Auswahl mithilfe von Attributen im Code.
So geben Sie einen Document-Formatierungsstil an
Wenden Sie ein SoapDocumentMethod-Attribut oder ein SoapRpcMethod-Attribut auf die Methode in der Proxyklasse an, die die entsprechende Webdienstmethode aufruft.
Webdienste, die mit ASP.NET-Unterstützung erstellt wurden, unterstützen sowohl den Literal-Parameterformatierungsstil als auch den Encoded-Parameterformatierungsstil. Das folgende Beispiel kombiniert den Formatierungsstil der Document-Methode mit dem Literal-Parameterformatierungsstil.
[SoapDocumentMethod("https://www.contoso.com/DocumentWrappedLiteral", RequestNamespace="https://www.contoso.com", ResponseNamespace="https://www.contoso.com", Use=SoapBindingUse.Literal)] public string DocumentWrappedLiteral(Address MyAddress, bool useZipPlus4) {<SoapDocumentMethod("https://www.contoso.com/DocumentWrappedLiteral", _ RequestNamespace:="https://www.contoso.com", _ ResponseNamespace:="https://www.contoso.com", _ Use:=SoapBindingUse.Literal)> _ Public Function DocumentWrappedLiteral(ByVal MyAddress As Address, _ ByVal useZipPlus4 As Boolean)As StringMit dem Document-Formatierungsstil wird ein XSD-Schema innerhalb der Dienstbeschreibung definiert, die sowohl die SOAP-Anforderung als auch die SOAP-Antwort definiert. Der folgende Code ist ein Auszug aus der Dienstbeschreibung für die SOAP-Anforderung der
DocumentWrappedLiteral-Webdienstmethode. Da der erste Parameter für dieDocumentWrappedLiteral-Webdienstmethode eine Klasse ist und der Literal-Parameterformatierungsstil angegeben wurde, wird ein XSD-Schema für denaddress-Typ erstellt.<s:element name="DocumentWrappedLiteral"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="MyAddress" nillable="true" type="s0:Address" /> <s:element minOccurs="1" maxOccurs="1" name="useZipPlus4" type="s:boolean" /> </s:sequence> </s:complexType> </s:element> <s:complexType name="Address"> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="Street" nillable="true" type="s:string" /> <s:element minOccurs="1" maxOccurs="1" name="City" nillable="true" type="s:string" /> <s:element minOccurs="1" maxOccurs="1" name="Zip" nillable="true" type="s:string" /> </s:sequence> </s:complexType>Mit dem in der Dienstbeschreibung definierten XSD-Schema folgt der XML-Abschnitt der SOAP-Anforderung für die
DocumentWrappedLiteral-Dienstmethode. Beachten Sie, dass die XML-Elemente unter dem Body-Element in der SOAP-Anforderungen mit den im XSD-Schema definierten Elementen übereinstimmen.<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <DocumentWrappedLiteral xmlns="https://www.contoso.com"> <MyAddress> <Street>string</Street> <City>string</City> <Zip>string</Zip> </MyAddress> <useZipPlus4>boolean</useZipPlus4> </DocumentWrappedLiteral> </soap:Body> </soap:Envelope>
So geben Sie einen RPC-Formatierungsstil an
Wenden Sie ein SoapRpcMethod-Attribut auf die Methode in der Proxyklasse an, die die entsprechende Webdienstmethode aufruft.
[SoapRpcMethodAttribute("https://www.contoso.com/Rpc", RequestNamespace="https://www.contoso.com", ResponseNamespace="https://www.contoso.com")] public Address Rpc(Address address, bool useZipPlus4) {<SoapRpcMethodAttribute("https://www.contoso.com/Rpc", _ RequestNamespace:="https://www.contoso.com", _ ResponseNamespace:="https://www.contoso.com")> _ Public Function Rpc(ByVal address As Address, _ ByVal useZipPlus4 As Boolean) As AddressIm vorhergehenden Beispiel ist das XSD-Schema in der Dienstbeschreibung für die SOAP-Anforderung oder die SOAP-Antwort für die
Rpc-Methode nicht streng definiert; es sind nur die Teile definiert, aus denen sie bestehen. Sehen Sie sich daher die SOAP-Anforderung für dieRpc-Methode an, und beachten Sie, dass die Parameter innerhalb eines Elements gekapselt und mit der Encoded-Parameterformatierung codiert sind.<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="https://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="https://www.contoso.com" xmlns:tnsTypes="https://www.contoso.com/encodedTypes" xmlns:wsdl="https://schemas.xmlsoap.org/wsdl/" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/"> <soap:Body soap:encodingStyle="https://schemas.xmlsoap.org/soap/encoding/"> <tns:Rpc> <address href="#1" /> <useZipPlus4>boolean</useZipPlus4> </tns:Rpc> <tnsTypes:Address id="1"> <Street id="2">string</Street> <City id="3">string</City> <Zip id="4">string</Zip> </tnsTypes:Address> </soap:Body> </soap:Envelope>
Siehe auch
Verweis
SoapDocumentMethodAttribute
SoapRpcMethodAttribute