Message.GetBody Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bu Message örneğin gövdesini alır.
Aşırı Yüklemeler
GetBody<T>(XmlObjectSerializer) |
Belirtilen seri hale getiriciyi kullanarak bunun Message gövdesini alır. |
GetBody<T>() |
Bu Message örneğin gövdesini alır. |
Örnekler
Aşağıdaki kod örneği, ileti göndermek ve yanıtı okumak için kanal fabrikasını kullanan bir istemciyi gösterir.
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Runtime.Serialization;
namespace ConsoleApplication1
{
class client
{
static void RunClient()
{
//Step1: create a binding with just HTTP
CustomBinding binding = new CustomBinding();
binding.Elements.Add(new HttpTransportBindingElement());
//Step2: use the binding to build the channel factory
IChannelFactory<IRequestChannel> factory =
binding.BuildChannelFactory<IRequestChannel>(
new BindingParameterCollection());
//open the channel factory
factory.Open();
//Step3: use the channel factory to create a channel
IRequestChannel channel = factory.CreateChannel(
new EndpointAddress("http://localhost:8080/channelapp"));
channel.Open();
//Step4: create a message
Message requestmessage = Message.CreateMessage(
MessageVersion.Soap12WSAddressing10,
"http://contoso.com/someaction",
"This is the body data");
//send message
Message replymessage = channel.Request(requestmessage);
Console.WriteLine("Reply message received");
Console.WriteLine("Reply action: {0}",
replymessage.Headers.Action);
string data = replymessage.GetBody<string>();
Console.WriteLine("Reply content: {0}", data);
//Step5: don't forget to close the message
requestmessage.Close();
replymessage.Close();
//don't forget to close the channel
channel.Close();
//don't forget to close the factory
factory.Close();
}
public static void Main()
{
Console.WriteLine("Press [ENTER] when service is ready");
Console.ReadLine();
RunClient();
Console.WriteLine("Press [ENTER] to exit");
Console.ReadLine();
}
}
}
Imports System.Collections.Generic
Imports System.Text
Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports System.Runtime.Serialization
Namespace ConsoleApplication1
Friend Class client
Private Shared Sub RunClient()
'Step1: create a binding with just HTTP
Dim binding As New CustomBinding()
binding.Elements.Add(New HttpTransportBindingElement())
'Step2: use the binding to build the channel factory
Dim factory As IChannelFactory(Of IRequestChannel) = binding.BuildChannelFactory(Of IRequestChannel)(New BindingParameterCollection())
'open the channel factory
factory.Open()
'Step3: use the channel factory to create a channel
Dim channel As IRequestChannel = factory.CreateChannel(New EndpointAddress("http://localhost:8080/channelapp"))
channel.Open()
'Step4: create a message
Dim requestmessage As Message = Message.CreateMessage(MessageVersion.Soap12WSAddressing10, "http://contoso.com/someaction", "This is the body data")
'send message
Dim replymessage As Message = channel.Request(requestmessage)
Console.WriteLine("Reply message received")
Console.WriteLine("Reply action: {0}", replymessage.Headers.Action)
Dim data = replymessage.GetBody(Of String)()
Console.WriteLine("Reply content: {0}", data)
'Step5: don't forget to close the message
requestmessage.Close()
replymessage.Close()
'don't forget to close the channel
channel.Close()
'don't forget to close the factory
factory.Close()
End Sub
Public Shared Sub Main()
Console.WriteLine("Press [ENTER] when service is ready")
Console.ReadLine()
RunClient()
Console.WriteLine("Press [ENTER] to exit")
Console.ReadLine()
End Sub
End Class
End Namespace
Açıklamalar
İleti oluşturulduktan sonra, döndürülen iletideki GetBody yöntemler kullanılarak ileti gövdesi okunabilir. Döndürülen nesne, öğesi içindeki Body
tüm alt öğeleri kapsüller. İletinin gövdesi bir akış olduğundan, yalnızca bir kez yazılabilir veya bir kez okunabilir.
GetBody<T>(XmlObjectSerializer) JSON iletileriyle çalışırken aşırı yüklemeyi kullanın; GetBody<T>() aşırı yükleme çalışmaz.
GetBody<T>(XmlObjectSerializer)
- Kaynak:
- Message.cs
- Kaynak:
- Message.cs
- Kaynak:
- Message.cs
Belirtilen seri hale getiriciyi kullanarak bunun Message gövdesini alır.
public:
generic <typename T>
T GetBody(System::Runtime::Serialization::XmlObjectSerializer ^ serializer);
public T GetBody<T> (System.Runtime.Serialization.XmlObjectSerializer serializer);
member this.GetBody : System.Runtime.Serialization.XmlObjectSerializer -> 'T
Public Function GetBody(Of T) (serializer As XmlObjectSerializer) As T
Tür Parametreleri
- T
İletinin gövdesi.
Parametreler
- serializer
- XmlObjectSerializer
XmlObjectSerializer İletinin gövdesini okumak için kullanılan nesne.
Döndürülenler
Bu iletinin gövdesini içeren türdeki T
bir nesne.
Özel durumlar
serializer
, null
değeridir.
Açıklamalar
Örneğin Message SOAP gövdesine karşılık gelen bir gövdesi vardır. çağrısıyla GetReaderAtBodyContentsbir XmlDictionaryReader olarak erişilebilir. Başlangıçta doğrudan öğesinden <S:Body>
sonra konumlandırılır ve öğeye </S:Body>
ulaşıldığında dönerEOF
. Alternatif olarak, gövdenin serileştirilmiş bir nesne içermesini bekliyorsanız, bunun yerine çağırabilirsiniz GetBody . Bir ileti gövdesine yalnızca bir kez erişilebildiğini ve iletinin yalnızca bir kez yazılabildiğini unutmayın. Gövdeye birden çok kez erişmek istiyorsanız, örneğini MessageBuffer oluşturmak için kullanınCreateBufferedCopy.
GetBody<T>(XmlObjectSerializer) JSON iletileriyle çalışırken aşırı yüklemeyi kullanın; GetBody<T>() aşırı yükleme çalışmaz.
Şunlara uygulanır
GetBody<T>()
- Kaynak:
- Message.cs
- Kaynak:
- Message.cs
- Kaynak:
- Message.cs
Bu Message örneğin gövdesini alır.
public:
generic <typename T>
T GetBody();
public T GetBody<T> ();
member this.GetBody : unit -> 'T
Public Function GetBody(Of T) () As T
Tür Parametreleri
- T
İletinin gövdesi.
Döndürülenler
Bu iletinin gövdesini içeren türdeki T
bir nesne.
Açıklamalar
Örneğin Message SOAP gövdesine karşılık gelen bir gövdesi vardır. çağrısıyla GetReaderAtBodyContentsbir XmlDictionaryReader olarak erişilebilir. Başlangıçta doğrudan öğesinden <S:Body>
sonra konumlandırılır ve öğeye </S:Body>
ulaşıldığında dönerEOF
. Alternatif olarak, gövdenin serileştirilmiş bir nesne içermesini bekliyorsanız, bunun yerine çağırabilirsiniz GetBody . Bir ileti gövdesine yalnızca bir kez erişilebildiğini ve iletinin yalnızca bir kez yazılabildiğini unutmayın. Birden çok kez erişmek Body
istiyorsanız örneği oluşturmak MessageBuffer için kullanınCreateBufferedCopy.
GetBody<T>(XmlObjectSerializer) JSON iletileriyle çalışırken aşırı yüklemeyi kullanın; GetBody<T>() aşırı yükleme çalışmaz.