谢谢,JustACoder和各位朋友的帮助,只能用分数来表示下了
下面学习博客的第二节(简单实例-2: 创建 Console Self-Host),问题一:项目运行的原理,有点不明白,这个解决方案的运行过程?1、WcfServiceLib工程:它是一个WCF服务类库项目,它的作用是什么呢?2、为什么“Host工程里要引用WcfServiceLib工程”,而且要把“App.config”文件从“Host工程”移到“WcfServiceLib工程”?3、Host工程代码:
# namespace WCFStudy2ConsoleHost  
# {  
#     class Program  
#     {  
#         static void Main(string[] args)  
#         {  
#             using(var host = new ServiceHost(typeof(Service1))) 
这一句什么意思?
 

#             {  
#                 host.Open();  
#                 Console.WriteLine("Service start.");  
#                 Console.Read();  
什么意思,什么作用?从客户端读数据???var?C#有这个变量吗?

#             }  
#         }  
#     }  
# }  4、Client工程里为什么要添加 Service References?添加“Service References”和添加“References”有什么不同?5、添加 Service References后,会在“Service References”生成一个“WcfSvc”文件它的作用是什么?6、Client工程代码:
# namespace WCFStudy2ConsoleClient  
# {  
#     class Program  
#     {  
#         static void Main(string[] args)  
#         {  
#             MyWcfSvc.Service1Client client = new MyWcfSvc.Service1Client();这句话什么意思?实例化客户端代理实例?
 
 
#             var result = client.GetData(123);  
这是一个什么方法???

#             Console.WriteLine(result);  
#             Console.Read();  
#         }  
#     }  
# }  问题二:错误
执行了“将WcfServiceLib里App.config移动到ConsoleHost工程里,删掉Lib工程里的App.config”,WcfServiceLib里没有App.config了,在添加“服务引用”的时候找不到服务,将App.config复制回去之后又可以找到了,添加上编译运行,出现了错误,但是可以运行谢谢各位

解决方案 »

  1.   

    这个实例的最后一句话:
    由于ServiceHost实例是被创建在应用程序域中,必须保证宿主进程在调用服务期间不会被关闭,因此利用Console.Read()来阻塞进程,以使得控制台应用程序能够一直运行,直到人为关闭应用程序。 是不是利用“Console.Read()”,实际是来读取流信息(这个方法读什么???),这样程序就一直运行。错误页面:
      

  2.   

    @_@ 真佩服楼主的提问精神。把我的blog翻出来review,不回答下,好像不给力using(var host = new ServiceHost(typeof(Service1))) using 语句块,.net很常见的语法,即在语句块作用域结束之时,销毁host对象。
    (host对象必须是实现了IDisposable接口,可以google下using)
    这里就是创建了个ServiceHost对象,通过指定服务实体(注意不是接口)var 是.net3.0的新增语法,不解释了,自己查查吧Console作为Host的时候比较特殊,因为如果不Read()让程序挂起的话,整个程序就退出了。
    如果退出Host对象也被销毁了,客户端就无法连接了。就是单纯的阻止程序退出,没有读入任何字符的意思。
    自己做个console工程跑下就明白了。MyWcfSvc.Service1Client client = new MyWcfSvc.Service1Client();
    >> 实例化客户端代理。这个MyWcfSvc是在添加Service Reference的时候指定的命名空间。var result = client.GetData(123); 
    >> 这不就是调用服务吗?问题二:错误
    执行了“将WcfServiceLib里App.config移动到ConsoleHost工程里,删掉Lib工程里的App.config”,WcfServiceLib里没有App.config了,在添加“服务引用”的时候找不到服务,将App.config复制回去之后又可以找到了,添加上编译运行,出现了错误,但是可以运行
    >> 这里是个小技巧,如果WCF Library的app.config存在的话。VS会为WCF Library项目自动创建Service Host便于程序员测试。所以把library的配置文件挪到console工程里。至于你出的错误我估计是你是在文件夹下操作的移动,而不是在IDE里,导致Console工程里并没有包含你挪过去的app.config。
      

  3.   

    楼主我劝你先把你的“WCF学习,第一节”结贴了再说