摘要: 当前的项目同时用到WCF和Enterprise Library3.1里的Exception Handling Application Block(EHAB),遇到了如下问题:
1. 如果在WCF客户端调用WCF服务端代码时,WCF服务端发生了异常,如何用EHAB在WCF服务端处理这个异常使WCF客户端知道?
2. WCF服务抛出的异常如何用EHAB处理?
阅读全文
I use netTcpBinding:
<netTcpBinding>
<binding name="NewBinding0" maxBufferPoolSize="52428800" maxBufferSize="6553600"
maxConnections="1000" maxReceivedMessageSize="6553600" />
</netTcpBinding>
and my behavior is:
<behavior name="ConcurrentBehavior">
<serviceThrottling maxConcurrentCalls="1000" maxConcurrentSessions="1000"
maxConcurrentInstances="1000" />
</behavior>
This is my test code:
/Files/bihpgh20/What limit my connections/ConcurrentTest.rar
I think with this config I can create 1000 client proxies conntceting to service currently, but unfornately, I got an EndpointNotFoundException after receive several responses from service(Test_1); If I send 10 requests, and then send 15 requests, and then send 20 requests, and so on... It's OK(Test_3).
Wait for a moment, My Test_3 sometimes still give me an EndpointNotFoundException.
I do not know what is the real reason. Please help me?
谁是占据C盘的凶手
操作系统经常会报告C盘空间不足,是谁占据了我们的C盘?谁是凶手?
1. hiberfil.sys文件
这个文件默认在C盘根目录下,是一个系统文件。只要启动了winxp的休眠功能,该文件就会存在,系统在进行休眠的时候就把内存中的信息保存到硬盘上的hiberfil.sys文件中,以确保唤醒时能够恢复到休眠前的状态。所以这个文件和系统的内存一样大
打开“控制面板→电源选项→休眠”,将“启用休眠”选项去掉,重启电脑,这时再到c盘下就会发现hiberfil.sys文件已经消失了。

2. pagefile.sys文件
这个文件默认在C盘根目录下,是一个系统文件。它就是系统页面文件(也就是大家熟知的虚拟内存文件),它的大小取决于打开的程序多少和你原先设置页面文件的最小最大值,是不断变化的,有时可能只有几十m,有时则达到1G以上。既然这个文件已经使得系统分区紧张,我们就来调整它,把它调整到其他空闲的分区中(e盘有10多g未用空间,就放到e盘吧)。选择“控制面板→系统→高级”,单击性能区域中的“设置”按钮;然后选择“高级→更改”,在打开的虚拟内存设置窗口中选择系统所在的分区,选中“无分页文件”将系统分区去除;最后选择e盘,如果想手动设置内存的最小最大值就选择“自定义大小”,如果想让系统来自己管理的话就选择“系统管理的分区”。
转移的地方:

小提示:去除某个分区的页面文件和设置某个分区的页面后都要单击一下旁边的“设置”按钮,这样你的设置才能生效,直接单击窗口的“确定”按钮是不行的。
3. catalog.wci文件夹
这个文件夹默认在C:\inetpub文件夹下。为了提高在硬盘上搜索文件的速度,我们可以开启索引服务对本地的文件创建索引。创建的索引就保存在这个文件下。
点“开始\搜索\改变首选项\使用制作索引服务”可开启索引服务。
开启索引服务后,点“开始\搜索\改变首选项\不使用制作索引服务”可关闭索引服务。
关闭索引服务后可手动删掉C:\inetpub\catalog.wci文件夹下的内容。

4. IE临时文件
可通过在IE中点“工具\设置...\移动文件夹”更改IE临时文件的位置。
《.NET 框架程序设计》笔记
第I部分 Microsoft .NET框架基本原理
第一章 Microsoft .NET框架开发平台体系架构
1.1 将源代码编译为托管模块
托管模块:一个需要CLR才能执行的标准Windows可移植可执行(protable executable, PE)文件。
托管模块的组成部分:
托管模块
PE表头
文件类型(GUI,CUI,DLL)
时间标记(表示文件的创建日期)
本地CPU代码的一些信息(仅对于包含本地CPU代码的模块)
CLR表头
所需的CLR的版本号
有关本地托管元数据,资源,强命名,标记等信息的位置和尺寸
元数据
有本模块定义的类型和成员
引用的类型和成员
中间语言代码(IL代码,拖管代码)
1.2 将托管模块组合为程序集
程序集:一个或多个托管模块,以及一些资源文件的逻辑组合。它提供了一种方式允许我们将一组文件看作一个单独的实体。
程序集的组成部分:
清单,托管模块,资源文件。
1.3 加载通用语言运行时
当生成一个程序集时,编译器会在程序集文件的PE表头及.text部分嵌入一些特殊信息。当程序集被执行时,这些特殊信息将导致CLR被加载并初始化(加载MSCorEE.dll文件(Microsoft Component Object Runtime Execution Engine))。
MSCorEE.dll文件位于%windir%\system32目录下,可通过查看这个文件是否存在在判断是否安装了.NET框架。
1.4 执行程序集代码
托管模块中的IL
IL是微软在咨询了一些商业和学术上的语言编译器作者后开发的一种独立于CPU的机器语言。
IL汇编器:ILAsm.exe
IL 反汇编器:ILDasm.exe
CLR的即时编译机制
一个方法只在第一次被加载时编译成本地CPU代码。
当应用程序关闭时编译生成的本地代码将被丢弃。
运行同一应用程序的两个实例,编译器会生成两份本地代码。
即时编译引起的性能损失
NGen.exe可以将一个程序集中的所有IL代码转换为本地代码。
IL与代码验证
IL代码被编译为本地CPU指令时,CLR将执行代码验证(Verification),这一过程确保代码所做的每一件事情都是“安全”的。不安全会抛出System.Security.VerificationException。
因为验证过程可以确保代码是安全的,所以.NET环境中一个进程里可以运行多个应用程序(应用程序域)。
1.5 .NET框架类库
.NET框架允许开发人员创建的应用程序种类。
.NET框架中常用的命名空间。
1.6 通用类型系统
通用类型系统(Common Type System, CTS)用来规定类型的定义和行为。
CTS中的一些规则:
一个类型可以包含0个或多个成员:字段、方法、属性、事件。
类型及其成员的可见性:Private(private), Family(protected), Assembly(internal), Family与Assembly, Family或Assembly(protected internal), Public(public)
类型只能单继承。
所有类型都必须(直接或间接)继承自于定义类型System.Object。
1.7 通用语言规范
通用语言规范(Common Language Specification, CLS)规定了可以被任何与CLS兼容的语言访问到的外部可见的类型和方法所必须遵循的规则。CLS规则不适用于仅在所定义程序集中可访问的代码。
各种语言提供了一个CLR/CTS的子集和一个CLS的超集。

一些CLS规则:
方法传递的参数及返回值不能是无符号整形。
不能仅用大小写区分公有方法。
CLS的完整列表可参见.NET框架SDK文档中“跨语言互操作”部分。
告知编译器检查CLS兼容性:
[assembly: CLSCompliant(true)]
1.8 与非托管代码互操作
略。