信道和格式化程序配置属性
本主题列出并解释可以在 .NET 远程处理系统中为 IChannel 实现指定的所有配置属性。当在配置文件中声明值时,所有值都以字符串表示,但当以编程方式生成属性 IDictionary 时,可以将整数值指定为整数(不带引号)或字符串(引号内的值),而布尔值可以指定为布尔值。所有其他值都指定为字符串。
有关如何在配置文件的 <channel> 元素中配置信道的信息,请参见如何:在配置文件中配置信道。有关如何以编程方式配置信道的信息,请参见如何:以编程方式配置信道。
下表列出了信道类型并显示它们所支持的信道属性。
类型 | 支持的属性 |
---|---|
allowAutoRedirect bindTo clientConnectionLimit connectionGroupName credentials exclusiveAddressUse listen machineName name port priority proxyName proxyPort servicePrincipalName suppressChannelData timeout unsafeAuthenticatedConnectionSharing useAuthenticatedConnectionSharing useDefaultCredentials useIpAddress |
|
allowAutoRedirect clientConnectionLimit connectionGroupName credentials domain machineName name password priority proxyName proxyPort servicePrincipalName timeout unsafeAuthenticatedConnectionSharing useAuthenticatedConnectionSharing useDefaultCredentials username |
|
bindTo exclusiveAddressUse listen machineName name port priority suppressChannelData useIpAddress |
|
authorizationModule bindTo exclusiveAddressUse impersonate machineName name port priority rejectRemoteRequests secure servicePrincipalName suppressChannelData timeout tokenImpersonationLevel useIpAddress |
|
domain machineName name password priority protectionLevel retryCount secure servicePrincipalName socketCachePolicy socketCacheTimeout timeout tokenImpersonationLevel username |
|
authorizationModule bindTo exclusiveAddressUse impersonate machineName name port priority protectionLevel rejectRemoteRequests# secure suppressChannelData useIpAddress |
|
authorizedGroup connectionTimeout name portName priority secure suppressChannelData |
|
connectionTimeout name priority secure |
|
authorizedGroup name portName priority secure suppressChannelData |
下表描述常规信道属性并列出支持它们的信道类型。
属性 | 说明 | 支持该属性的类型 |
---|---|---|
name |
指定此信道的名称的字符串。如果不指定名称,则根据类型使用默认名称: HttpChannel:“http” HttpClientChannel:“http client” HttpServerChannel:“http server” TcpChannel:“tcp” TcpClientChannel:“tcp client” TcpServerChannel:“tcp server” IpcChannel:“ipc” IpcClientChannel:“ipc client” IpcServerChannel:“ipc server” 每个信道必须具有唯一的名称。如果要忽略名称,将此属性设置为空字符串("" 或 String.Empty),但要避免命名冲突。系统将允许任何数目其 name 等于 String.Empty 的信道。此属性用于在调用 ChannelServices.GetChannel() 时检索特定信道。有关详细信息,请参见信道。 |
HttpChannel HttpServerChannel HttpClientChannel TcpChannel TcpClientChannel TcpServerChannel IpcChannel IpcClientChannel IpcServerChannel |
machineName |
指定用于当前信道的计算机名称的字符串。如果用于服务器信道,则重写 useIpAddress。 备注 通常应该使用计算机的域名系统 (DNS) 名称,但如果特定网络接口卡 (NIC)(通常是无线 NIC)的 IP 地址在快速变动,则必须将应用程序配置为使用 machineName,以使远程处理能够通过 DNS 找到计算机。但是,当计算机名没有以合理的速度解析时(或者根本不解析时),以及当计算机有多个物理或虚拟的 NIC(对于拨号连接或 VPN 网络适配器,通常是虚拟 NIC)时,您应该将 machineName 属性设置为当前用于该连接的 NIC 的 IP 地址。 |
HttpChannel HttpClientChannel HttpServerChannel TcpChannel TcpClientChannel TcpServerChannel |
priority |
表示分配给此信道的优先级的整数。数字越大,指示被选择以首先连接的机会越大。默认优先级为 1,允许为负数。 |
HttpChannel HttpServerChannel HttpClientChannel TcpChannel TcpClientChannel TcpServerChannel IpcChannel IpcClientChannel IpcServerChannel |
secure (TcpChannel) |
指定信道上的通信是否安全的一个布尔值(true 或 false)。默认值为 false。在该布尔值设置为 true 时,将 tokenImpersonationLevel 属性设置为 Identification,并且将 protectionLevel 属性设置为 EncryptAndSign。请注意,安全的 TcpClientChannel 只能连接到安全的 TcpServerChannel 上,不安全的 TcpClientChannel 只能连接到不安全的 TcpServerChannel 上。 备注 如果服务器计算机上运行的系统是 Windows 95、Windows 98 或 Windows Me,则无法将 TcpServerChannel 指定为安全的。 |
TcpChannel TcpClientChannel TcpServerChannel |
secure (IpcChannel) |
指定信道上的通信是否安全的一个布尔值(true 或 false)。默认值为 false。在该布尔值设置为 true 时,将 tokenImpersonationLevel 属性设置为 Identification。请注意,安全的 IpcClientChannel 可连接到安全的或不安全的 IpcServerChannel 上,但不安全的 IpcClientChannel 只能连接到不安全的 IpcServerChannel 上。 |
IpcChannel IpcClientChannel IpcServerChannel |
protectionLevel |
类型 ProtectionLevel 的值。默认值为 None,除非 secure 属性设置为 true,在此情况下,默认值为 EncryptAndSign。您必须将 secure 属性设置为 true,以便将 ProtectionLevel 属性设置为 None 以外的任何值。 请注意,None 是与 Windows 95、Windows 98 或 Windows Me 兼容的唯一设置。 |
TcpClientChannel TcpServerChannel |
下表显示可以指定的客户端信道属性。
属性 | 说明 | 支持该属性的类型 |
---|---|---|
clientConnectionLimit |
指示可以对给定服务器同时打开的连接数的整数。默认值为 2。 |
HttpChannel HttpClientChannel |
proxyName |
一个字符串,指定在对远程服务器进行调用时代理客户端使用的名称。默认情况下,使用客户端计算机的主机名。 |
HttpChannel HttpClientChannel |
proxyPort |
一个整数,指定代理客户端在对远程服务器进行调用时将使用的端口号。默认情况下,在运行时将选择一个可用的无特权端口。 |
HttpChannel HttpClientChannel |
retryCount |
一个整数,指定客户端重复尝试最初失败的远程调用的次数。默认值为 1。 |
TcpClientChannel |
socketCachePolicy |
一个 SocketCachePolicy 枚举的成员,它指定是相对于套接字的创建还是通过该套接字的最后传输来测量 socketCacheTimeout。默认值为 Default。 |
TcpClientChannel |
socketCacheTimeout |
一个以秒为单位的整数,它指定从 TcpClientChannel 对象所维护的缓存中移除套接字之前等待的时间。默认值为 5 秒。 |
TcpClientChannel |
connectionTimeout |
一个以毫秒为单位的整数,它指定等待成功连接所用的时间。0 或 -1 指示无限的超时期间。默认值为 Infinite。 |
IpcChannel IpcClientChannel |
timeout |
一个以毫秒为单位的整数,它指定请求超时前所等待的时间。0 或 -1 指示无限的超时期间。默认值为 Infinite。 |
HttpChannel HttpClientChannel TcpChannel TcpClientChannel |
allowAutoRedirect |
一个布尔值(true 或 false),该值指示是否已启用服务器重定向的自动处理。 |
HttpChannel HttpClientChannel |
credentials |
获取或设置一个 ICredentials 实现,该实现表示客户端的身份。 |
HttpChannel HttpClientChannel |
useAuthenticatedConnectionSharing |
一个布尔值(true 或 false),它指示服务器信道将重复使用经过身份验证的连接,而不是对每个传入的调用执行身份验证。默认情况下,如果 useDefaultCredentials 值设置为 true,该值也会设置为 true;否则,该值将设置为 false,这意味着如果服务器要求身份验证,将对每个调用执行身份验证。这也适用于等效的编程对象,该对象是通过创建实现 IDictionary 的对象,将“credentials”值设置为 CredentialCache.DefaultCredentials 并且将该值传递到信道接收器或者使用 ChannelServices.GetChannelSinkProperties 方法中返回的 IDictionary 来实现的。 仅有以下平台上的 .NET Framework 1.1 版才支持此名称/值对:Microsoft Windows 98、Windows NT 4.0、Windows Millennium Edition (Windows Me)、Windows 2000、Windows XP Home Edition、Windows XP Professional 和 Windows Server 2003 系列。 |
HttpChannel HttpClientChannel |
unsafeAuthenticatedConnectionSharing |
一个布尔值(true 或 false),它指示客户端将提供它自己的凭据和连接组名称,而服务器应该使用该凭据和连接组名称来创建经过身份验证的连接组。如果该值设置为 true,则 connectionGroupName 值必须仅映射到一个经过身份验证的用户。如果 useAuthenticatedConnectionSharing 值设置为 true,则将忽略该名称/值对。 仅有以下平台上的 .NET Framework 1.1 版才支持此名称/值对:Windows 98、Windows NT 4.0、Windows Me、Windows 2000、Windows XP Home Edition、Windows XP Professional 和 Windows Server 2003 系列。 |
HttpChannel HttpClientChannel |
connectionGroupName |
一个指定名称的字符串,如果也指定了 unsafeAuthenticatedConnectionSharing 值,该名称将用作服务器上的连接组名称。如果 unsafeAuthenticatedConnectionSharing 未设置为 true,则将忽略该名称/值对。如果已指定,请确保该名称仅映射到一个经过身份验证的用户。 仅有以下平台上的 .NET Framework 1.1 版才支持此名称/值对:Windows 98、Windows NT 4.0、Windows Me、Windows 2000、Windows XP Home Edition、Windows XP Professional 和 Windows Server 2003 系列。 |
HttpChannel HttpClientChannel |
useDefaultCredentials |
一个布尔值(true 或 false),它指定在对服务器信道进行身份验证时是否提供与当前线程相关联的身份的凭据。 |
HttpChannel HttpClientChannel |
servicePrincipalName |
一个字符串,它指定用于 Kerberos 身份验证的 servicePrincipalName。默认值为 null。 |
HttpChannel HttpClientChannel TcpChannel TcpClientChannel |
tokenImpersonationLevel |
类型 TokenImpersonationLevel 的值。该属性指定服务器如何对客户端进行身份验证。默认值为 None,除非 secure 属性设置为 true,在此情况下,默认值为 Identification。 |
TcpChannel TcpClientChannel |
domain |
一个字符串,在对服务器信道进行身份验证时(与 username 指定的用户名以及 password 指定的密码结合使用)指定要使用的域名。 |
HttpClientChannel TcpClientChannel |
username |
一个字符串,在对服务器信道进行身份验证时(与 password 指定的密码以及 domain 指定的域结合使用)指定要使用的用户名。 |
HttpClientChannel TcpClientChannel |
password |
一个字符串,在对服务器信道进行身份验证时(与 username 指定的用户名以及 domain 指定的域结合使用)指定要使用的用户名。 |
HttpClientChannel TcpClientChannel |
备注
在 Windows 98 和 Windows Me 上,没有用于标识身份验证连接组名称的安全 ID。因此,这些平台上只有一个连接组名称。
备注
如果您要让应用程序传递 ICredentials 实现或 HttpClientChannel 属性中的显式 username、password 和 domain 值,则可以通过也传递 unsafeAuthenticatedConnectionSharing 名称/值对和 connectionGroupName 名称/值对(确保 connectionGroupName 值仅映射到一个经过身份验证的用户)来启用身份验证连接共享。
下表显示可以指定的服务器信道属性。
属性 | 说明 | 支持该属性的类型 |
---|---|---|
port |
指定信道将在其上侦听的端口的整数。如果指定 0,则远程处理系统将自动选择一个打开的端口。 |
HttpChannel HttpServerChannel TcpChannel TcpServerChannel |
suppressChannelData |
一个布尔值(true 或 false),它指定信道是否将显示从 ChannelData、ChannelData 或 ChannelData 属性提供的信道数据。默认值为 false。 |
HttpChannel HttpServerChannel TcpChannel TcpServerChannel IpcChannel IpcServerChannel |
useIpAddress |
一个布尔值(true 或 false),它指定是否使用发布 URL 中的 IP 地址而不使用计算机名称。例如,无线网络通常在便携式计算机在网络中移动时变换它的 IP 地址。如果将该值指定为 false,则将使用计算机名称(而不是地址),这样远程通信在漫游时就不会断开连接。默认值为 true。在 machineName 属性与服务器信道一起使用时,该属性可重写该值;有关更多信息,请参见 machineName 属性。 |
HttpChannel HttpServerChannel TcpChannel TcpServerChannel |
bindTo |
一个字符串,指定服务器信道应该绑定到的网络接口卡 (NIC) 的 IP 地址。默认值为 System.Net.IPAddress.Any。 |
HttpChannel HttpServerChannel TcpChannel TcpServerChannel |
listen |
一个布尔值(true 或 false),它指定是否允许激活挂钩到 IChannelReceiverHook.WantsToListen。默认值为 true。 |
HttpChannel HttpServerChannel |
rejectRemoteRequests |
一个布尔值(true 或 false),它指定是否拒绝来自其他计算机的请求。如果指定 true,将只允许来自本地计算机的远程处理调用。默认值为 false。 |
TcpChannel TcpServerChannel |
exclusiveAddressUse |
一个布尔值(true 或 false),它指定信道是否将防止其他应用程序重复使用 IP 地址/端口组合。默认值为 true。当设置为 true 时,该属性会将 SocketOptionName 服务器套接字选项设置为 SocketOptionName.ExclusiveAddressUse。 仅有以下平台上的 .NET Framework 1.1 版才支持此属性:Windows NT 4.0 Service Pack 4 或更高版本、Windows Me、Windows 2000、Windows XP Home Edition、Windows XP Professional 和 Windows Server 2003 系列。 在 Windows XP Service Pack 2 或 Windows Server 2003 之前的平台上,更改此属性需要管理员特权。 |
HttpChannel HttpServerChannel TcpChannel TcpServerChannel |
impersonate |
一个布尔值(true 或 false),它指定服务器是否应模拟客户端。默认值为 false。 |
TcpChannel TcpServerChannel |
authorizedGroup |
一个字符串,它指定有权连接到此信道的组或用户。默认设置是允许所有授权用户具有访问权。 |
IpcChannel IpcServerChannel |
portName |
一个字符串,指定服务器将在其公开的端口的名称。该属性是 IpcChannel 或 IpcServerChannel 所必需的。 |
IpcChannel IpcServerChannel |
authorizationModule |
一个字符串,它指定实现 IAuthorizeRemotingConnection 接口的类的程序集、命名空间和类名称。该字符串的格式必须是“AuthorizationModuleNameSpace.AuthorizationModuleClass,AuthorizationModuleAssembly”。 |
TcpChannel TcpServerChannel |
下表显示可以指定的信道接收器属性。
属性 | 说明 | 支持该属性的类型 |
---|---|---|
includeVersions |
一个布尔值(true 或 false),它指定格式化程序是否应该包括版本控制信息。 |
BinaryClientFormatterSink BinaryServerFormatterSink SoapClientFormatterSink SoapServerFormatterSink |
strictBinding |
一个布尔值(true 或 false),它指定在仅使用类型名称和程序集名称(无版本信息)之前,接收格式化程序首先尝试使用完整的版本信息(如果有的话)来标识类型。系统提供的两个格式化程序的默认值都是 false。有关详细信息,请参见 <formatter> 元素(模板)。 |
BinaryServerFormatterSink SoapServerFormatterSink |
metadataEnabled |
一个布尔值(true 或 false),它指定是否在接收器处于信道接收链中时允许以“?wsdl”结尾的请求。默认设置为 true。如果为 false,接收器将在为应用程序域中的任何对象请求元数据的所有情况下引发异常。 仅有以下平台上的 .NET Framework 1.1 版才支持此属性:Windows 98、Windows NT 4.0、Windows Me、Windows 2000、Windows XP Home Edition、Windows XP Professional 和 Windows Server 2003 系列。 |
|
remoteApplicationMetadataEnabled |
一个布尔值(true 或 false),它指定是否允许对对象统一资源标识符 (URI)“RemoteApplicationMetadata?wsdl”的请求,该标识符将返回 Web 服务描述语言 (WSDL),它描述应用程序域发布的所有对象。如果为 false,对“RemoteApplicationMetadata.rem”的任何请求都将触发异常。将允许对特定对象 URI 的其他所有“?wsdl”请求。如果为 true,则将允许全局元数据请求。默认设置为 false。 仅有以下平台上的 .NET Framework 1.1 版才支持此属性:Windows 98、Windows NT 4.0、Windows Me、Windows 2000、Windows XP Home Edition、Windows XP Professional 和 Windows Server 2003 系列。 |
SdlChannelSink |
typeFilterLevel |
一个字符串值,它指定服务器信道尝试的自动反序列化级别。支持的值为 Low (默认值)和 Full。有关反序列化级别的详细信息,请参见 .NET 远程处理中的自动反序列化。 仅有以下平台上的 .NET Framework 1.1 版才支持此属性:Windows 98、Windows NT 4.0、Windows Me、Windows 2000、Windows XP Home Edition、Windows XP Professional 和 Windows Server 2003 系列。 |
BinaryServerFormatterSink SoapServerFormatterSink |