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)

Source:
Message.cs
Source:
Message.cs
Source:
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

一个表示 SOAP 错误的 MessageFault 对象。

reason
String

SOAP 错误的原因。

detail
Object

SOAP 错误的详细信息。

action
String

有关应如何处理消息的说明。

返回

所创建消息的 Message 对象。

例外

versionfaultactiondetailfaultCodenull

注解

此静态方法用于创建准备好要发送的消息的新副本。

适用于

CreateMessage(MessageVersion, FaultCode, String, String)

Source:
Message.cs
Source:
Message.cs
Source:
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

一个表示 SOAP 错误的 MessageFault 对象。

reason
String

SOAP 错误的原因。

action
String

有关应如何处理消息的说明。

返回

所创建消息的 Message 对象。

例外

versionfaultactionfaultCodenull

注解

此静态方法用于创建准备好要发送的消息的新副本。

适用于

CreateMessage(XmlReader, Int32, MessageVersion)

Source:
Message.cs
Source:
Message.cs
Source:
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)

Source:
Message.cs
Source:
Message.cs
Source:
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)

Source:
Message.cs
Source:
Message.cs
Source:
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)

Source:
Message.cs
Source:
Message.cs
Source:
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)

Source:
Message.cs
Source:
Message.cs
Source:
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

一个类型为 byte 的 BodyWriter

返回

所创建消息的 Message 对象。

例外

Versionactionbodynull

注解

空消息可用于将警报从一个终结点发送到另一个终结点,而不包含任何实际内容。

适用于

CreateMessage(MessageVersion, String, Object)

Source:
Message.cs
Source:
Message.cs
Source:
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)

Source:
Message.cs
Source:
Message.cs
Source:
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

一个表示 SOAP 错误的 MessageFault 对象。

action
String

有关应如何处理消息的说明。

返回

所创建消息的 Message 对象。

例外

Versionfaultactionnull

注解

此静态方法用于创建准备好要发送的消息的新副本。

适用于

CreateMessage(MessageVersion, String, XmlDictionaryReader)

Source:
Message.cs
Source:
Message.cs
Source:
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)

Source:
Message.cs
Source:
Message.cs
Source:
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

注解

此静态方法用于创建准备好要发送的消息的新副本。

适用于