我的环境 Win2003+sp1, VS2005 Team suite+sp1, SQL2005+sp1 1.   我在运行 15 章的例子时WinClient时, 报异常: 无法将类型为"System.__ComObject"的对象强制转换为类 
型"System.Collections.ArrayList" 我查看了代码: 
                public CourseManagerForm() 
                { 
                        // 
                        // Required for Windows Form Designer support 
                        // 
                        InitializeComponent();                         this.dateTimePickerEndDate.Value = DateTime.Today + 
TimeSpan.FromDays(120); 
                        try 
                        { 
                                using (QueryCourseControl cc = new QueryCourseControl()) 
                                { 
                                        this.categories = cc.GetCategories();   <--- 这里抛的异常                                         this.comboBoxCategories.DataSource = this.categories;                                   } 
                        } 
                        catch (Exception ex) 
                        { 
                                MessageBox.Show(ex.Message); 
                        } 
                } 
    对应我在CourseManagement.Data 及 CourseManagement.Entities 中查看了相应的代码,的确返回的是正确的 ArrayList 类型。 其实是在 CourseManagement.Control 中返回时报的异常。
    经过自己的实验,如果返回的ArrayList中的Item不是自定的类型就不会报错。但这里就是需要返回CourseData的集合ArrayList。由于以前没有接触过类似方面的开发,不知如何处理。 
WebClient也是一样的问题 
System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> 
System.InvalidCastException: 无法将类型为"System.__ComObject"的对象强制转换为类 
型"CourseManagement.Control.CourseSelection"。 2.  我的书从 465页 到 480页没有了,变成了 417页 - 432页 准备上班后就去换。不知道是一本还是所有都是这样。 3.  能否提供各位 QQ 或 MSN 号方便交流。4.  另外还有一个关于负载均衡的问题望指点。看此书也是希望能有所启发。 
现在很多客户都要求能系统(这里是指用vs2003 c# + SQL2000开发的Web应用程序)能做负载均衡。 
我现在的理解是(从实现的角度说的) 
方式一.  以前开发的系统什么都不改,从系统上,做一个web服务器群集联接唯一的数据库服务器。(怎么部署还不知道,只前只是做过win2003的 
双机)这样说白了也就是在请求页面时,能操作系统来解决对负载的判断和均衡实现。 
方式二.  以前看过 《Microsoft.NET Remoting权威指南》 里面提到了一点点,应该是同Duwamish中的方法一样。是需要 
从系统的架构上进行修改的。 
方式三  现在本书中提到的方式和PetShop中的方式一样,使用 windows 消息队列来进行异步处理,    我也总是将 负载均衡 和 系统的分布式部署 相关联,方式二和方式三应该是实现的技术手段不一样和第一种方式应该有本质的区别,或者说不是一个 
层面的实现? 
  我感觉一个是对用户页面的响应,一个是对用户的业务处理的响应,也就是说方式一只能解决用户在访问页面时的负载问题,在用户多时应该不能否保证页面 
中业务的处理的负载问题。 是否在实际的实现中是将提到的方式同时使用的? 以上的说法可能一个都不正确或者说不完成正确,望指点。万分感谢。 PS: 书中代码及本贴中代码下载打包下载: http://nhl.ys168.com 
(其实在2005下也没有转什么)

解决方案 »

  1.   

    谢谢 hdt(倦怠) 兄. $_$
      

  2.   

    你那个网站打不开,手头也米书,能不能大概的讲一讲
    QueryCourseControl 类 、和GetCategories(); 的过程
      

  3.   

    To hdt(倦怠) 
         http://nhl.ys168.com (http://free.ys168.com/?nhl) 可以访问,再试试?或者你留下邮箱我发给你.
        其实整个应用很简单,就是个典型的三层应用,
        WinForm -> QueryCourseControl(Facade) -> CourseData (DAL) 返回一个 CourseEntity 的ArrayList 然后在 winform 上绑定.如果 QueryCourseControl 和 CourseData 两层者用类库引用dll完全没问题,就是用Enterprise Services 的方法做就有问题。
        问题就出在 QueryCourseControl.GetCategories() 返回值明明是个 ArrayList ,如果返回的ArrayList中的Item不是自定的类型就不会报错, 而这里就是需要返回 CourseEntity 的ArrayList。
        
    PS;  由于公司上网机器是公用的所以回复有些慢.
      

  4.   

    返回包含 CourseEntity 的ArrayList 就会有错是这样吗?
      

  5.   

    To hdt(倦怠) 
        是的,我写代码试过.