Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
XmlReader-exemplet visar bearbetningen av en meddelandetext med hjälp av en XmlReader. Exemplet baseras på Komma igång, som implementerar en kalkylatortjänst. Ytterligare en tjänståtgärd, Sum, har lagts till som accepterar ett meddelande som innehåller en matris med värden som ska läggas till tillsammans. Tjänsten läser meddelandet med hjälp av en XmlReader.
Anmärkning
Installationsproceduren och bygginstruktionerna för det här exemplet finns i slutet av det här avsnittet.
Kalkylatorgränssnittet innehåller en tjänståtgärd med namnet Sum som accepterar en Message parameter, enligt följande exempelkod.
public interface ICalculator
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
[OperationContract]
Message Sum(Message message);
}
Klienten kommer åt Sum genom att först skapa en matris med heltalsvärden, sedan skapa ett meddelande från matrisen och sedan anropa Sum metoden med det skapade meddelandet, enligt följande exempelkod.
CalculatorClient client = new CalculatorClient();
//...
// Call the Sum service operation.
int[] values = { 1, 2, 3, 4, 5 };
using (new OperationContextScope(client.InnerChannel))
{
Message request = Message.CreateMessage(OperationContext.Current.OutgoingMessageHeaders.MessageVersion, "http://Microsoft.ServiceModel.Samples/ICalculator/Sum", values);
Message reply = client.Sum(request);
int sum = reply.GetBody<int>();
Console.WriteLine("Sum(1,2,3,4,5) = {0}", sum);
}
I tjänsten används implementeringen av tjänståtgärden Sum för att nå meddelandets innehåll med hjälp av ett XmlReader-objekt, så att man kan iterera genom värdena som ska summeras. Metoden GetReaderAtBodyContents anropas för att komma åt meddelandetexten, enligt följande exempelkod.
public int Sum(Message message)
{
int sum = 0;
string text = "";
//The body of the message contains a list of numbers that are read
//directly using an XmlReader.
XmlReader body = message.GetReaderAtBodyContents ();
while (body.Read())
{
text = body.ReadString().Trim();
if (text.Length>0)
{
sum += Convert.ToInt32(text);
}
}
body.Close();
Message response = Message.CreateMessage(
"http://Microsoft.ServiceModel.Samples/ICalculator/SumResponse",
sum);
return response;
}
När du kör exemplet visas begäranden och svar för åtgärden i klientkonsolfönstret. Tryck på RETUR i klientfönstret för att stänga av klienten.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Sum(1,2,3,4,5) = 15
Press <ENTER> to terminate client.
Så här konfigurerar du, skapar och kör exemplet
Kontrollera att du har utfört One-Time installationsproceduren för Windows Communication Foundation-exempel.
Om du vill skapa C# eller Visual Basic .NET-versionen av lösningen följer du anvisningarna i Skapa Windows Communication Foundation-exempel.
Om du vill köra exemplet i en konfiguration med en eller flera datorer följer du anvisningarna i Köra Windows Communication Foundation-exempel.