关于异常的编程
我们的代码中可能会引发很多异常。现在,用户的浏览器可能会断开链接,甚至可能仍然会遇到 ASP.NET 错误页面。我们可以推测出很多种可能发生的情况。如下所示:
程序集可能不存在。
程序集存在但不包含任何图像。
程序集可能不包含所请求的图像。
代码也可能会造成其他错误。当找不到图像时,浏览器默认的响应是返回一个带有红十字的图像以表示一个断开的链接。
您当然希望用自己的默认图像来代替此图像。我已将一个默认的断开链接图像包含在 ImageServer 程序集中,当发生异常时,该图像将返回到浏览器。此行为可以通过在 web.config 文件的 AppConfig 部分添加一个设置来实现。
当发生错误时,如果要覆盖默认行为(返回链上的异常),请将以下内容添加到 web.config 中。
<appSettings> <add key="MFRShowBrokenLink" value="true" /> </appSettings>
现在,当代码中出现异常时,将向浏览器返回断开链接图像,并在跟踪日志中写入警告。
 图4:链接断开时返回的图像
如果查看跟踪日志,您会看到有关图像不存在的项,该项与下面类似。
 图5:无效图像请求的示例跟踪日志输出
本文讨论的所有代码都可以通过本页顶部的 MFRImages.exe 下载链接获得。此下载包括本节完成的所有增强工作。还包括一些测试页,通过这些测试页可以查看使用处理程序和 ASPX 方法来呈现图像的结果。
整理
下面要添加一种方法,以返回驻留在程序集内的图像的正确 URL,然后自定义控件编写人员(或是您)可以调用此方法来返回图像。
如果已选择了处理程序方法来提供图像,则您所需的函数如下。
public static string ConstructImageURL ( Assembly assembly, string image ) { return string.Concat ( ".mfr?assem=" , HttpUtility.UrlEncode ( assembly.FullName.ToString ( ) ) , "&image=" , HttpUtility.UrlEncode ( image ) ) ; } | 对于这段代码,我使用的是 string.Concat(),因为它比 string.Format() 大约快 4 倍。每个小技巧都会有所帮助! 然后可以用它来设置您在自定义控件中创建的所有图像的 ImageURL 属性。
|
|