語言

Message.CreateMessage 方法

定義

創造訊息。

多載

名稱 Description
CreateMessage(MessageVersion, FaultCode, String, Object, String)

建立包含 SOAP 錯誤、原因與錯誤細節、版本及動作的訊息。

CreateMessage(MessageVersion, String, Object, XmlObjectSerializer)

使用指定的版本、動作、訊息主體及序列化器建立訊息。

CreateMessage(MessageVersion, FaultCode, String, String)

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

CreateMessage(XmlDictionaryReader, Int32, MessageVersion)

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

CreateMessage(MessageVersion, String, XmlReader)

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

CreateMessage(XmlReader, Int32, MessageVersion)

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

CreateMessage(MessageVersion, String, BodyWriter)

建立由位元組陣列組成的訊息。

CreateMessage(MessageVersion, String, Object)

建立包含指定版本、動作與正文的訊息。

CreateMessage(MessageVersion, MessageFault, String)

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

CreateMessage(MessageVersion, String)

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

CreateMessage(MessageVersion, String, XmlDictionaryReader)

建立包含指定版本、動作與正文的訊息。

範例

以下程式碼範例展示了一個使用通道工廠發送訊息並讀取回覆的客戶端。

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 用於訊息產生的物件。

例外狀況

version, fault, , action或 detailfaultCode 是 null。

備註

此靜態方法用於建立一份新的訊息副本,準備傳送。

適用於

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 用於訊息產生的物件。

例外狀況

version,fault或action是。null

備註

此靜態方法用於建立一份新的訊息副本,準備傳送。

處理 JSON 訊息時請使用該 CreateMessage(MessageVersion, String, Object, XmlObjectSerializer) 方法,但該 CreateMessage(MessageVersion, String, Object) 方法無法處理 JSON 訊息。

適用於

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 用於訊息產生的物件。

例外狀況

version, , fault或 actionfaultCode 是 null。

備註

此靜態方法用於建立一份新的訊息副本,準備傳送。

適用於

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 用於訊息產生的物件。

例外狀況

envelopeReader 或 version 為 null。

備註

Message擁有 。envelopeReader

此方法讀取信封,緩衝所有標頭到標頭集合,並讀取最多但不包含 Body 起始標籤,並回傳訊息。 如果方法呼叫拋出例外,就會關閉讀取器。

回傳訊息的正文可以被閱讀或寫入。

訊息正文可使用 GetBody 回傳訊息的方法來讀取。 回傳物件封裝了該 Body 元素中的所有子元素。 訊息本體可用 或 WriteBody來書寫WriteMessage。 一旦寫下,就無法閱讀。

關閉訊息即關閉底層的信封讀取器。

適用於

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 用於訊息產生的物件。

例外狀況

version,action或body是。null

備註

此靜態方法用於建立一份新的訊息副本,準備傳送。

適用於

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 用於訊息產生的物件。

例外狀況

envelopeReader 或 version 為 null。

備註

Message擁有 。envelopeReader

此方法讀取信封,緩衝所有標頭到標頭集合,並讀取最多但不包含 Body 起始標籤,並回傳訊息。 如果方法呼叫拋出例外,就會關閉讀取器。

回傳訊息的正文可以被閱讀或寫入。

訊息正文可使用 GetBody 回傳訊息的方法來讀取。 回傳物件封裝了該 Body 元素中的所有子元素。 訊息本體可用 或 WriteBody來書寫WriteMessage。 一旦寫下,就無法閱讀。

關閉訊息即關閉底層的信封讀取器。

適用於

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

A BodyWriter 型別位元組。

傳回

一個 Message 用於訊息產生的物件。

例外狀況

Version,action或body是。null

備註

空訊息對於端點來說是有用的,可以向另一個端點發送警報,但沒有任何實際內容。

適用於

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 用於訊息產生的物件。

例外狀況

version,action或body是。null

備註

此靜態方法用於建立一份新的訊息副本,準備傳送。

處理 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 用於訊息產生的物件。

例外狀況

Version,fault或action是。null

備註

此靜態方法用於建立一份新的訊息副本,準備傳送。

適用於

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 用於訊息產生的物件。

例外狀況

version 或 action 為 null。

備註

此靜態方法用於建立一份新的訊息副本,準備傳送。

適用於

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 用於訊息產生的物件。

例外狀況

version,action或body是。null

備註

此靜態方法用於建立一份新的訊息副本,準備傳送。

適用於