<formatter> 元素(模板)

包含要插入到客户端或服务器信道接收器链中的格式化程序接收器的信道接收器提供程序。有两种可能的层次结构可包含此元素。

<configuration>

<system.runtime.remoting>

<channelSinkProviders>

<clientProviders>

<formatter>

此处指定的格式化程序提供程序将成为由 <formatter> 实例使用的模板。

<configuration>

<system.runtime.remoting>

<channelSinkProviders>

<serverProviders>

<formatter>

此处指定的格式化程序提供程序也将成为由 <formatter> 实例使用的模板。

<formatter  
   id="FormatterID"
   type="FormatterSinkProviderType, FormatterAssembly"
   customFormatterProperty="customProperty"
   includeVersions="true"
   strictBinding="false"
...typeFilterLevel="Low | Full"
/>

可选属性

属性 说明

customFormatterProperty

指示支持的自定义信道接收器属性。可以指定自定义信道接收器提供程序及其接收器可能支持的任意数量的提供程序和信道接收器属性。应使用属性 (Attribute)/值对指定自定义信道接收器属性 (Property)。在下面的示例中:

<provider id="CustomChannelSinkProvider" type="Namespace.CustomChannelSinkProvider, CustomChannels" customChannelSinkProperty="ChannelSinkPropertyValue"/>

customChannelSinkProperty 属性及其值将可用作提供程序构造函数中的 IDictionary 参数。

也可在此处指定自定义接收器提供程序数据。仅支持一个级别的节点。在下面的示例中:

<provider ref="custom">
<extra data="value"/>
<extra data="AnotherValue"/>
</provider>

该额外信息将可用作提供程序构造函数中 SinkProviderDataICollection

includeVersions

指示在序列化类型信息时,发送格式化程序包含完整的类型和程序集版本信息。有关重要的详细信息,请参见下面的“备注”部分。系统提供的两个格式化程序的默认值都是 true

strictBinding

指示在仅使用类型名称和程序集名称(无版本信息)之前,接收格式化程序首先试着使用完整的版本信息(如果有的话)来标识类型。有关重要的详细信息,请参见下面的“备注”部分。系统提供的两个格式化程序的默认值均为 false

typeFilterLevel

一个字符串值,它指定服务器通道接收器链中的格式化程序尝试的自动反序列化的级别。支持的值为 Low(默认值)和 Full。有关反序列化级别的详细信息,请参见 .NET 远程处理中的自动反序列化

在以下平台上只有 .NET Framework 1.1 版才支持该属性:Windows 98、Windows NT 4.0、Windows Millennium Edition、Windows 2000、Windows XP Home Edition、Windows XP Professional、Windows Server 2003 系列。

必选属性

属性 说明

id

指定标识此格式化程序接收器提供程序的字符串。其他人可以在自己的 ref 属性中使用此字符串,以绑定到此格式化程序接收器提供程序。

type

指定格式化程序接收器提供程序的完整类型名以及包含该提供程序实现的程序集的名称。如果包含程序集位于全局程序集缓存中,则此信息包括版本、区域性和公钥信息。

备注

在此处指定的格式化程序可由此配置文件中或由同一应用程序加载的其他配置文件中的其他位置的 <formatter> 实例元素引用。

下表描述了在 includeVersionsstrictBinding 属性同时出现时两者之间进行的交互。

includeVersions(发送格式化程序) strictBinding(接收格式化程序) 如何加载类型

true

true

加载确切的类型,否则将引发 TypeLoadException

false

true

仅使用类型名称和程序集名称加载类型,否则将引发 TypeLoadException

true

false

如果存在,则加载确切的类型;否则,仅使用类型名称和程序集名称加载类型。如果加载失败,则将引发 TypeLoadException

false

false

仅使用类型名称和程序集名称加载类型,否则将引发 TypeLoadException

示例

由于下面的配置文件使用 <clientProviders> 实例,因此必须指定希望信道使用的所有格式化程序和提供程序。在此情况下,<formatter> 元素引用 SoapClientFormatterSink 并使用 <provider> 实例元素向 HttpChannel 分配“propsetter”和“null”信道接收器提供程序,这些提供程序本身是使用 <provider> 模板元素声明的。另外,还创建了“propsetter”信道接收器提供程序,并将自定义提供程序属性 (Property) 指定为提供程序实例元素的属性 (Attribute) 和子 <endpoint> 属性 (Attribute) 名/值对。

<configuration>
   <system.runtime.remoting>
      <application>
         <client>
            <wellknown 
               type="RemoteType, RemoteAssembly"
               url="http://computername:8080/RemoteType.rem"/>
         </client>
         <channels>
            <channel ref="http">
               <clientProviders>
                  <formatter ref="soap"/>
                  <provider 
                     ref="propsetter" 
                     username="bob" 
                     writeToConsole="true"
                  >
                     <endpoint url="contoso.com:9000" someProperty="xyz" />
                     <endpoint url="contoso.com:9001" someProperty="123" />
                  </provider>
                  <provider ref="null" writeToConsole="true" />
               </clientProviders>
            </channel>
         </channels>
      </application>
      <channelSinkProviders>
         <clientProviders>
            <provider 
               id="propsetter" 
               type="ChannelSinkPropertySetterProvider, SinkAssembly" 
            />
            <provider 
               id="null" 
               type="NullSinkProvider, SinkAssembly" 
            />
         </clientProviders>
      </channelSinkProviders>
      <debug loadTypes="true" />
   </system.runtime.remoting>
</configuration>

要求

**配置文件:**应用程序配置文件、计算机配置文件 (Machine.config)

请参见

参考

远程处理设置架构
BinaryClientFormatterSink
SoapClientFormatterSink
BinaryServerFormatterSink
SoapServerFormatterSink

Footer image

版权所有 (C) 2007 Microsoft Corporation。保留所有权利。