Message.CreateMessage 方法

定義

建立訊息。

多載

CreateMessage(MessageVersion, FaultCode, String, Object, String)

建立包含 SOAP 錯誤、錯誤的原因和詳細資料、版本和動作的訊息。

CreateMessage(MessageVersion, FaultCode, String, String)

建立包含 SOAP 錯誤、錯誤的原因、版本和動作的訊息。

CreateMessage(XmlReader, Int32, MessageVersion)

使用指定的讀取器、動作和版本建立訊息。

CreateMessage(XmlDictionaryReader, Int32, MessageVersion)

使用指定的讀取器、動作和版本建立訊息。

CreateMessage(MessageVersion, String, XmlReader)

使用指定的讀取器、動作和版本建立訊息。

CreateMessage(MessageVersion, String, Object, XmlObjectSerializer)

使用指定的版本、動作、訊息本文和序列化程式建立訊息。

CreateMessage(MessageVersion, String, BodyWriter)

使用由位元組陣列組成的本文來建立訊息。

CreateMessage(MessageVersion, String, Object)

使用指定的版本、動作和本文建立訊息。

CreateMessage(MessageVersion, MessageFault, String)

建立包含 SOAP 錯誤、版本和動作的訊息。

CreateMessage(MessageVersion, String, XmlDictionaryReader)

使用指定的版本、動作和本文建立訊息。

CreateMessage(MessageVersion, String)

建立包含版本和動作的訊息。

範例

下列程式碼範例會示範使用通道處理站傳送訊息和讀取回覆的用戶端。

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

備註

這個方法是用來建立準備要傳送的新訊息複本。

當使用 JSON 訊息時,請使用 CreateMessage(MessageVersion, String, Object, XmlObjectSerializer) 方法,CreateMessage(MessageVersion, String, Object) 方法無法與 JSON 訊息搭配使用。

CreateMessage(MessageVersion, FaultCode, String, Object, String)

來源:
Message.cs
來源:
Message.cs
來源:
Message.cs

建立包含 SOAP 錯誤、錯誤的原因和詳細資料、版本和動作的訊息。

public:
 static System::ServiceModel::Channels::Message ^ CreateMessage(System::ServiceModel::Channels::MessageVersion ^ version, System::ServiceModel::FaultCode ^ faultCode, System::String ^ reason, System::Object ^ detail, System::String ^ action);
public static System.ServiceModel.Channels.Message CreateMessage (System.ServiceModel.Channels.MessageVersion version, System.ServiceModel.FaultCode faultCode, string reason, object detail, string action);
static member CreateMessage : System.ServiceModel.Channels.MessageVersion * System.ServiceModel.FaultCode * string * obj * string -> System.ServiceModel.Channels.Message
Public Shared Function CreateMessage (version As MessageVersion, faultCode As FaultCode, reason As String, detail As Object, action As String) As Message

參數

version
MessageVersion

MessageVersion 物件,指定要用於該訊息的 SOAP 版本。

faultCode
FaultCode

MessageFault 物件,表示 SOAP 錯誤。

reason
String

SOAP 錯誤的原因。

detail
Object

SOAP 錯誤的詳細資料。

action
String

應該如何處理此訊息的說明。

傳回

已建立之訊息的 Message 物件。

例外狀況

versionfaultactiondetailfaultCodenull

備註

這個靜態方法是用來建立準備要傳送的新訊息複本。

適用於

CreateMessage(MessageVersion, FaultCode, String, String)

來源:
Message.cs
來源:
Message.cs
來源:
Message.cs

建立包含 SOAP 錯誤、錯誤的原因、版本和動作的訊息。

public:
 static System::ServiceModel::Channels::Message ^ CreateMessage(System::ServiceModel::Channels::MessageVersion ^ version, System::ServiceModel::FaultCode ^ faultCode, System::String ^ reason, System::String ^ action);
public static System.ServiceModel.Channels.Message CreateMessage (System.ServiceModel.Channels.MessageVersion version, System.ServiceModel.FaultCode faultCode, string reason, string action);
static member CreateMessage : System.ServiceModel.Channels.MessageVersion * System.ServiceModel.FaultCode * string * string -> System.ServiceModel.Channels.Message
Public Shared Function CreateMessage (version As MessageVersion, faultCode As FaultCode, reason As String, action As String) As Message

參數

version
MessageVersion

MessageVersion 物件,指定要用於該訊息的 SOAP 版本。

faultCode
FaultCode

MessageFault 物件,表示 SOAP 錯誤。

reason
String

SOAP 錯誤的原因。

action
String

應該如何處理此訊息的說明。

傳回

已建立之訊息的 Message 物件。

例外狀況

versionfaultactionfaultCodenull

備註

這個靜態方法是用來建立準備要傳送的新訊息複本。

適用於

CreateMessage(XmlReader, Int32, MessageVersion)

來源:
Message.cs
來源:
Message.cs
來源:
Message.cs

使用指定的讀取器、動作和版本建立訊息。

public:
 static System::ServiceModel::Channels::Message ^ CreateMessage(System::Xml::XmlReader ^ envelopeReader, int maxSizeOfHeaders, System::ServiceModel::Channels::MessageVersion ^ version);
public static System.ServiceModel.Channels.Message CreateMessage (System.Xml.XmlReader envelopeReader, int maxSizeOfHeaders, System.ServiceModel.Channels.MessageVersion version);
static member CreateMessage : System.Xml.XmlReader * int * System.ServiceModel.Channels.MessageVersion -> System.ServiceModel.Channels.Message
Public Shared Function CreateMessage (envelopeReader As XmlReader, maxSizeOfHeaders As Integer, version As MessageVersion) As Message

參數

envelopeReader
XmlReader

要用來讀取 SOAP 訊息的 XmlReader 物件。

maxSizeOfHeaders
Int32

標頭的大小上限,以位元組為單位。

version
MessageVersion

MessageVersion 物件,指定要用於該訊息的 SOAP 版本。

傳回

已建立之訊息的 Message 物件。

例外狀況

envelopeReaderversionnull

備註

Message 取得的 envelopeReader擁有權。

這個方法會讀取封套、將所有標頭緩衝到標頭集合中,以及讀取到 Body 開始標記為止 (但不含此標記),然後傳回該訊息。 如果方法呼叫擲回例外狀況,則會關閉讀取器。

之後就可以讀取或寫入傳回之訊息的本文。

您可以針對傳回的訊息使用 GetBody 方法來讀取訊息本文。 傳回的物件會將所有子項目都封裝於 Body 項目中。 您可以使用 WriteBodyWriteMessage 寫入訊息本文。 一旦寫入後,它就無法讀取。

如果關閉訊息,便會關閉基礎封套讀取器。

適用於

CreateMessage(XmlDictionaryReader, Int32, MessageVersion)

來源:
Message.cs
來源:
Message.cs
來源:
Message.cs

使用指定的讀取器、動作和版本建立訊息。

public:
 static System::ServiceModel::Channels::Message ^ CreateMessage(System::Xml::XmlDictionaryReader ^ envelopeReader, int maxSizeOfHeaders, System::ServiceModel::Channels::MessageVersion ^ version);
public static System.ServiceModel.Channels.Message CreateMessage (System.Xml.XmlDictionaryReader envelopeReader, int maxSizeOfHeaders, System.ServiceModel.Channels.MessageVersion version);
static member CreateMessage : System.Xml.XmlDictionaryReader * int * System.ServiceModel.Channels.MessageVersion -> System.ServiceModel.Channels.Message
Public Shared Function CreateMessage (envelopeReader As XmlDictionaryReader, maxSizeOfHeaders As Integer, version As MessageVersion) As Message

參數

envelopeReader
XmlDictionaryReader

要用來讀取 SOAP 訊息的 XmlDictionaryReader 物件。

maxSizeOfHeaders
Int32

標頭的大小上限,以位元組為單位。

version
MessageVersion

有效的 MessageVersion 值,其指定要用於訊息的 SOAP 版本。

傳回

已建立之訊息的 Message 物件。

例外狀況

envelopeReaderversionnull

備註

Message 取得的 envelopeReader擁有權。

這個方法會讀取封套、將所有標頭緩衝到標頭集合中,以及讀取到 Body 開始標記為止 (但不含此標記),然後傳回該訊息。 如果方法呼叫擲回例外狀況,則會關閉讀取器。

之後就可以讀取或寫入傳回之訊息的本文。

您可以針對傳回的訊息使用 GetBody 方法來讀取訊息本文。 傳回的物件會將所有子項目都封裝於 Body 項目中。 您可以使用 WriteBodyWriteMessage 寫入訊息本文。 一旦寫入後,它就無法讀取。

如果關閉訊息,便會關閉基礎封套讀取器。

適用於

CreateMessage(MessageVersion, String, XmlReader)

來源:
Message.cs
來源:
Message.cs
來源:
Message.cs

使用指定的讀取器、動作和版本建立訊息。

public:
 static System::ServiceModel::Channels::Message ^ CreateMessage(System::ServiceModel::Channels::MessageVersion ^ version, System::String ^ action, System::Xml::XmlReader ^ body);
public static System.ServiceModel.Channels.Message CreateMessage (System.ServiceModel.Channels.MessageVersion version, string action, System.Xml.XmlReader body);
static member CreateMessage : System.ServiceModel.Channels.MessageVersion * string * System.Xml.XmlReader -> System.ServiceModel.Channels.Message
Public Shared Function CreateMessage (version As MessageVersion, action As String, body As XmlReader) As Message

參數

version
MessageVersion

MessageVersion 物件,指定要用於該訊息的 SOAP 版本。

action
String

應該如何處理此訊息的說明。

body
XmlReader

要用來讀取 SOAP 訊息的 XmlReader 物件。

傳回

已建立之訊息的 Message 物件。

例外狀況

versionactionbodynull

備註

這個靜態方法是用來建立準備要傳送的新訊息複本。

適用於

CreateMessage(MessageVersion, String, Object, XmlObjectSerializer)

來源:
Message.cs
來源:
Message.cs
來源:
Message.cs

使用指定的版本、動作、訊息本文和序列化程式建立訊息。

public:
 static System::ServiceModel::Channels::Message ^ CreateMessage(System::ServiceModel::Channels::MessageVersion ^ version, System::String ^ action, System::Object ^ body, System::Runtime::Serialization::XmlObjectSerializer ^ serializer);
public static System.ServiceModel.Channels.Message CreateMessage (System.ServiceModel.Channels.MessageVersion version, string action, object body, System.Runtime.Serialization.XmlObjectSerializer serializer);
static member CreateMessage : System.ServiceModel.Channels.MessageVersion * string * obj * System.Runtime.Serialization.XmlObjectSerializer -> System.ServiceModel.Channels.Message
Public Shared Function CreateMessage (version As MessageVersion, action As String, body As Object, serializer As XmlObjectSerializer) As Message

參數

version
MessageVersion

MessageVersion 物件,指定要用於該訊息的 SOAP 版本。

action
String

應該如何處理此訊息的說明。

body
Object

訊息的主體。

serializer
XmlObjectSerializer

用來序列化訊息的 XmlObjectSerializer 物件。

傳回

已建立之訊息的 Message 物件。

例外狀況

versionfaultactionnull

備註

這個靜態方法是用來建立準備要傳送的新訊息複本。

當使用 JSON 訊息時,請使用 CreateMessage(MessageVersion, String, Object, XmlObjectSerializer) 方法,CreateMessage(MessageVersion, String, Object) 方法無法與 JSON 訊息搭配使用。

適用於

CreateMessage(MessageVersion, String, BodyWriter)

來源:
Message.cs
來源:
Message.cs
來源:
Message.cs

使用由位元組陣列組成的本文來建立訊息。

public:
 static System::ServiceModel::Channels::Message ^ CreateMessage(System::ServiceModel::Channels::MessageVersion ^ version, System::String ^ action, System::ServiceModel::Channels::BodyWriter ^ body);
public static System.ServiceModel.Channels.Message CreateMessage (System.ServiceModel.Channels.MessageVersion version, string action, System.ServiceModel.Channels.BodyWriter body);
static member CreateMessage : System.ServiceModel.Channels.MessageVersion * string * System.ServiceModel.Channels.BodyWriter -> System.ServiceModel.Channels.Message
Public Shared Function CreateMessage (version As MessageVersion, action As String, body As BodyWriter) As Message

參數

version
MessageVersion

MessageVersion 物件,指定要用於該訊息的 SOAP 版本。

action
String

應該如何處理此訊息的說明。

body
BodyWriter

型別為 type 的 BodyWriter

傳回

已建立之訊息的 Message 物件。

例外狀況

Versionactionbodynull

備註

如果端點要將不含任何實際內容的警示傳送給另一個端點,這時便可使用空白訊息。

適用於

CreateMessage(MessageVersion, String, Object)

來源:
Message.cs
來源:
Message.cs
來源:
Message.cs

使用指定的版本、動作和本文建立訊息。

public:
 static System::ServiceModel::Channels::Message ^ CreateMessage(System::ServiceModel::Channels::MessageVersion ^ version, System::String ^ action, System::Object ^ body);
public static System.ServiceModel.Channels.Message CreateMessage (System.ServiceModel.Channels.MessageVersion version, string action, object body);
static member CreateMessage : System.ServiceModel.Channels.MessageVersion * string * obj -> System.ServiceModel.Channels.Message
Public Shared Function CreateMessage (version As MessageVersion, action As String, body As Object) As Message

參數

version
MessageVersion

MessageVersion 物件,指定要用於該訊息的 SOAP 版本。

action
String

應該如何處理此訊息的說明。

body
Object

訊息的主體。

傳回

已建立之訊息的 Message 物件。

例外狀況

versionactionbodynull

備註

這個靜態方法是用來建立準備要傳送的新訊息複本。

當使用 JSON 訊息時,請使用 CreateMessage(MessageVersion, String, Object, XmlObjectSerializer) 方法,CreateMessage(MessageVersion, String, Object) 方法無法與 JSON 訊息搭配使用。

適用於

CreateMessage(MessageVersion, MessageFault, String)

來源:
Message.cs
來源:
Message.cs
來源:
Message.cs

建立包含 SOAP 錯誤、版本和動作的訊息。

public:
 static System::ServiceModel::Channels::Message ^ CreateMessage(System::ServiceModel::Channels::MessageVersion ^ version, System::ServiceModel::Channels::MessageFault ^ fault, System::String ^ action);
public static System.ServiceModel.Channels.Message CreateMessage (System.ServiceModel.Channels.MessageVersion version, System.ServiceModel.Channels.MessageFault fault, string action);
static member CreateMessage : System.ServiceModel.Channels.MessageVersion * System.ServiceModel.Channels.MessageFault * string -> System.ServiceModel.Channels.Message
Public Shared Function CreateMessage (version As MessageVersion, fault As MessageFault, action As String) As Message

參數

version
MessageVersion

MessageVersion 物件,指定要用於該訊息的 SOAP 版本。

fault
MessageFault

MessageFault 物件,表示 SOAP 錯誤。

action
String

應該如何處理此訊息的說明。

傳回

已建立之訊息的 Message 物件。

例外狀況

Versionfaultactionnull

備註

這個靜態方法是用來建立準備要傳送的新訊息複本。

適用於

CreateMessage(MessageVersion, String, XmlDictionaryReader)

來源:
Message.cs
來源:
Message.cs
來源:
Message.cs

使用指定的版本、動作和本文建立訊息。

public:
 static System::ServiceModel::Channels::Message ^ CreateMessage(System::ServiceModel::Channels::MessageVersion ^ version, System::String ^ action, System::Xml::XmlDictionaryReader ^ body);
public static System.ServiceModel.Channels.Message CreateMessage (System.ServiceModel.Channels.MessageVersion version, string action, System.Xml.XmlDictionaryReader body);
static member CreateMessage : System.ServiceModel.Channels.MessageVersion * string * System.Xml.XmlDictionaryReader -> System.ServiceModel.Channels.Message
Public Shared Function CreateMessage (version As MessageVersion, action As String, body As XmlDictionaryReader) As Message

參數

version
MessageVersion

MessageVersion 物件,指定要用於該訊息的 SOAP 版本。

action
String

應該如何處理此訊息的說明。

body
XmlDictionaryReader

訊息的主體。

傳回

已建立之訊息的 Message 物件。

例外狀況

versionactionbodynull

備註

這個靜態方法是用來建立準備要傳送的新訊息複本。

適用於

CreateMessage(MessageVersion, String)

來源:
Message.cs
來源:
Message.cs
來源:
Message.cs

建立包含版本和動作的訊息。

public:
 static System::ServiceModel::Channels::Message ^ CreateMessage(System::ServiceModel::Channels::MessageVersion ^ version, System::String ^ action);
public static System.ServiceModel.Channels.Message CreateMessage (System.ServiceModel.Channels.MessageVersion version, string action);
static member CreateMessage : System.ServiceModel.Channels.MessageVersion * string -> System.ServiceModel.Channels.Message
Public Shared Function CreateMessage (version As MessageVersion, action As String) As Message

參數

version
MessageVersion

MessageVersion 物件,指定要用於該訊息的 SOAP 版本。

action
String

應該如何處理此訊息的說明。

傳回

已建立之訊息的 Message 物件。

例外狀況

versionactionnull

備註

這個靜態方法是用來建立準備要傳送的新訊息複本。

適用於