这段代码与上面为 ASPX 页面显示的代码非常类似 - 从传来的 URL 读取参数,然后将这些参数传递到 RenderImage 函数。
现在,要想使用处理程序来提供图像,我们需要使用不同的 URL。在此实例中,需要创建一个虚构的文件扩展名(即在 IIS 中不存在的扩展名),这样,图像请求就可以传送给正确的处理程序。在此示例中我将使用扩展名“mfr”(表示“清单资源”)。图像请求现在看起来有点像下面的描述。
<img src="/uploadfile/201210/13/5F02543311.gif" />
注意,我还未指定资源的路径,只是指定了文件扩展名 .mfr。
使用处理程序的主要好处是可以为所有请求调用该程序,而不用考虑它们的路径。要使处理程序能够工作还需要另外两个步骤。首先,需要修改 web.config,以指定新的处理程序:
<configuration> <system.web> <httpHandlers> <add verb="GET" path="*.mfr" type="ImageServer.ManifestResourceHandler, ImageServer" /> </httpHandlers> </system.web> </configuration> |
其次,您需要在 IIS 管理中编辑 Web 服务器的配置。单击您要更改的 Web 站点的 Properties(属性),选择 Home Directory(主目录)选项卡,然后单击 Configuration(配置)。将显示与以下窗口类似的窗口。
单击 Add(添加)按钮,为 .mfr 文件类型创建条目。每个扩展名都会被映射到处理资源请求的 ISAPI 过滤器。对于 ASP.NET,为 aspnet_isapi.dll 过滤器。此库驻留在磁盘中已安装的 Framework 下,因此要设置 .mfr 扩展名的所有请求以通过相应的 ISAPI dll,需要进行如下设置:
版本 路径
1.0 C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\aspnet_isapi.dll
1.1 C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll
其余的设置显示在以下图像中。请注意,必须清除 Verify that file exists(检查文件是否存在)复选框,否则永远不会调用处理程序(因为磁盘中不存在实际的 .mfr 文件)。
现在应该可以运行处理程序了。在浏览器中键入映射到程序集中的资源的 URL:
如果您接收到的不是请求的图像,而是一个异常(如“‘null’不是‘stream’的有效值”),那么您可能遇到了目前我们还没有在代码中进行处理的一些小问题 - 如果图像有错误怎么办? 我们将在下一节对这个问题及其他一