自定义代理技术示例

更新:2007 年 11 月

此示例演示 RealProxy 类的扩展性。通过扩展 RealProxy,用户代码可获得对将要传送到(或传送自)任何远程对象的消息的访问权。此示例将创建三个可执行文件。ProxyWithReturnMessage.exe 应用程序重写 Invoke 方法,以显示消息数据。ProxyWithCustomCasting.exe 应用程序使用名为 IFaq 和 IBaz 的两个接口来演示自定义强制转换功能。ProxyWiredToHttpChannel.exe 应用程序演示如何使用 Http 通道来截获和转发对 RemotingHello 服务的调用。

hzzt6yfe.alert_caution(zh-cn,VS.90).gif重要说明:

此示例要求您的计算机上安装了 Internet 信息服务 (IIS)。运行示例应用程序之前,必须在 IIS 中注册 RemotingHello 服务。

有关使用这些示例的信息,请参见下面的主题:

Download sample

使用命令提示生成示例

  1. 打开命令提示窗口,定位到 CS 子目录。

  2. 在命令行中键入 msbuild CustomProxiesCS.sln。

    hzzt6yfe.alert_note(zh-cn,VS.90).gif说明:

    此示例生成三个控制台应用程序。必须使用命令提示来启动并运行这些应用程序,才能查看相应的输出。

使用 Visual Studio 生成示例

  1. 打开 Windows 资源管理器,定位到 CS 子目录。

  2. 双击 CustomProxiesCS.sln 的图标,在 Visual Studio 中打开该文件。

  3. 在“生成”菜单上,选择“生成解决方案”。

在 IIS 中注册服务

  1. 将服务编译为 DLL 并将此 DLL 复制到将从中加载该服务的 bin 目录。按照上述步骤使用命令提示或 Visual Studio 生成该示例时,将编译该服务,在 ProxyWiredToHttpChannel 下创建 bin 子目录并将 Hello.dll 复制到该子目录中。

  2. 启动 Internet 服务管理器,然后选择服务器节点下的“默认网站”。在菜单上选择“操作”->“新建”->“虚拟目录”,然后单击“下一步”继续。

  3. 输入 RemotingHello 作为别名,然后按“下一步”。

  4. 输入服务所在的目录。输入完整路径,但排除步骤 1 中的 DLL 复制到的 bin 目录。

  5. 按“下一步”。接受提供的默认值并再次按“下一步”。按“完成”。现在已注册了该服务,在“Internet 服务管理器”窗口中“默认网站”列表的下面将出现此服务。

  6. 确保注册服务的目录中存在 web.config 文件。此文件描述了您的服务,在客户端尝试通过浏览器或使用端口 80 上的 HTTP 通道的客户端访问您的服务时将自动加载此文件。

运行示例

  1. 定位到包含这三个可执行文件之一的目录:

    • ProxyWiredToHttpChannel.exe

    • ProxyWithCustomCasting.exe

    • ProxyWithReturnMessage.exe。

    每个可执行文件都位于与控制台应用程序名称相同的目录下的 \bin\Debug 子目录中。

  2. 在命令行中键入可执行文件的名称。运行 ProxyWiredToHttpChannel.exe 之前,确保按照上述步骤在 IIS 中注册了 RemotingHello 服务。

请参见

概念

扩展 RealProxy

参考

IChannel

IMessage

IRemotingTypeInfo

MarshalByRefObject

OneWayAttribute

RealProxy

System.Collections

System.Runtime.Remoting

System.Runtime.Remoting.Proxies

System.Runtime.Remoting.Messaging

UnmanagedType

其他资源

高级远程处理

对象激活和生存期