一切福田,不離方寸,從心而覓,感無不通。

Category Archives: C#

C#文件操作大全

1.创建文件夹 //using System.IO; Directory.CreateDirectory(%%1); 2.创建文件 //using System.IO; File.Create(%%1); 3.删除文件 //using System.IO; File.Delete(%%1); 4.删除文件夹 //using System.IO; Directory.Delete(%%1); 5.删除一个目录下所有的文件夹 //using System.IO; foreach (string dirStr in Directory.GetDirectories(%%1)) { DirectoryInfo dir = new DirectoryInfo(dirStr); ArrayList folders=new ArrayList(); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); for (int i = 0; i < folders.Count; i++) { FileInfo f = folders[i] as FileInfo; if (f == null) { DirectoryInfo d = folders[i] as DirectoryInfo; d.Delete(); } } } 6.清空文件夹 //using System.IO; Directory.Delete(%%1,true); Directory.CreateDirectory(%%1); 7.读取文件 7.1.操作系统默认编码 //using System.IO; StreamReader s = File.OpenText(%%1); string %%2 = null; while ((%%2 = […]

龙生   19 Jan 2015
View Details

WebBrowser打印设置

webbrowser,居然被用作套打。。。。。。 由于是套打,格式要求很严格,页眉页脚、页边距等等等等。 在网上找到下列代码,做适当修改后基本上能满足要求了,但是由于是用JS修改注册码,因此和客户端的IE设置有很大关系,必须要求客户IE允许Activex。如果不允许,var Wsh=new ActiveXObject("WScript.Shell");将抛出一个异常。 <script language="JavaScript" type="text/javascript"> var HKEY_Root,HKEY_Path,HKEY_Key; HKEY_Root="HKEY_CURRENT_USER"; HKEY_Path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\"; //设置网页打印的页眉页脚为空 function PageSetup_Null() { try { var Wsh=new ActiveXObject("WScript.Shell"); HKEY_Key="header"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,""); HKEY_Key="footer"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,""); HKEY_Key="margin_bottom"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0"); HKEY_Key="margin_left"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0"); HKEY_Key="margin_right"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0"); HKEY_Key="margin_top"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"0"); } catch(e){ //alert(e); } } //设置网页打印的页眉页脚为默认值 function  PageSetup_Default() { try { var Wsh=new ActiveXObject("WScript.Shell"); HKEY_Key="header"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&w&b页码,&p/&P"); HKEY_Key="footer"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&u&b&d"); } catch(e){} } </script> 第二种方法:直接在.cs文件中写方法。 protected void Page_Load(object sender, EventArgs e) { //PageSetup("", ""); } private void PageSetup(string header, string footer) { Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Internet Explorer\\PageSetup\\", true); rk.SetValue("header", header); rk.SetValue("footer", footer); rk.SetValue("margin_bottom", 0); rk.SetValue("margin_left", 0); […]

龙生   08 Dec 2014
View Details

webBrowser给documenttext赋值

今天使用webbrowser的时候给documenttext赋值老是没用,查了半天资料才发现要先navigate一下才行   最后的使用方法如下   using (WebBrowser wb = new WebBrowser()) { wb.Navigate(“about:blank"); wb.Document.Write(content);   ///需要更改的内容 el = wb.Document.GetElementById("sender"); if (el != null) el.InnerHtml = EnviromentManager.Username;   string html = wb.Document.Body.InnerHtml; } from:http://blog.csdn.net/xiao_rory/article/details/6030160

龙生   08 Dec 2014
View Details

IP地址与数字地址相互转换

站长网IP查询地址:http://tool.chinaz.com/ip/ 可以看到,IP查询工具是先将IP段地址转化成数字地址,再才得到IP的物理地址。 ————————————————————————————————————————————- 为什么要将IP段地址转化成数字地址? 根据TCP/IP协议规定,IP地址是由32位二进制数组成,而且在INTERNET范围内是唯一的。例如,某台联在因特网上的计算机的IP地址为: 11010010 01001001 10001100 00000010 很明显,这些数字对于人来说不太好记忆。人们为了方便记忆,就将组成计算机的IP地址的32位二进制分成四段,每段8位,中间用小数点隔开,然后将每八位二进制转换成十进制数,这样上述计算机的IP地址就变成了:118.123.15.102。 由于在同一个区域里,IP段都是很相近的,如果拿IP段(118.123.15.102)直接进行比较,在操作上很是麻烦,而且数据的存储也不易实现,所以才会把IP转换成数字地址,再来确定IP段的物理地址。 ————————————————————————————————————————————- 理解了IP的概念之后,诸如IP(118.123.15.102)怎样转换成数字地址呢? IP本是32为二进制,为了方便记忆才转化成了四段十进制,所以只要把IP还原成二进制,再转换成十进制就可以得到IP的数字地址。 .NET C# IP与数字地址相互转化: //IP转换成数字地址 public static uint IPToInt(string ipAddress) { string disjunctiveStr = ".,: "; char[] delimiter = disjunctiveStr.ToCharArray(); string[] startIP = null; for (int i = 1; i <= 5; i++) { startIP = ipAddress.Split(delimiter, i); } string a1 = startIP[0].ToString(); string a2 = startIP[1].ToString(); string a3 = startIP[2].ToString(); string a4 = startIP[3].ToString(); uint U1 = uint.Parse(a1); uint U2 = uint.Parse(a2); uint U3 = uint.Parse(a3); uint U4 = uint.Parse(a4); uint U = U1 […]

龙生   30 Oct 2014
View Details

ASP.NET伪静态实现

1.什么是伪静态?使用伪静态的作用是什么?

定义:动态网页通过重写URL的方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。

龙生   25 Oct 2014
View Details

C#操作IIS7程序池新建站点站点配置

最近在做一个WEB程序的安装包;对一些操作IIS进行一个简单的总结;主要包括对IIS进行站点的新建以及新建站点的NET版本的选择,还有针对IIS7程序池的托管模式以及版本的操作;首先要对Microsoft.Web.Administration进行引用,它主要是用来操作IIS7; using System.DirectoryServices; using Microsoft.Web.Administration; 1:首先是对本版IIS的版本进行配置:

2:是判断程序池是存在;

3:删除应用程序池

4:创建应用程序池 (对程序池的设置主要是针对IIS7;IIS7应用程序池托管模式主要包括集成跟经典模式,并进行NET版本的设置)

运用C#代码来对IIS7程序池托管管道模式及版本进行修改; 5:针对IIS6的NET版进行设置;因为此处我是用到NET4.0所以V4.0.30319 若是NET2.0则在这进行修改 v2.0.50727

6:平常我们可能还得对IIS中的MIME类型进行增加;下面主要是我们用到两个类型分别是:xaml,xap

7:下面是做安装时一段对IIS进行操作的代码;兼容IIS6及IIS7;新建虚拟目录并对相应的属性进行设置;对IIS7还进行新建程序池的程序;并设置程序池的配置;

8:下面的代码是对文件夹权限进行设置,下面代码是创建Everyone 并给予全部权限

龙生   21 Oct 2014
View Details

CORS, IIS and WebDAV

The most common problem encountered when trying to get CORS working in IIS is WebDAV. WebDAV is installed as both a module and a handler. It wants to process OPTIONS requests but doesn’t know what to do for CORS (especially if you’re using the CORS support fromThinktecture.IdentityModel). The fix is to remove both the module and handler in web.config. The other common problem when using the CORS support from Thnktecture.IdentityModel is that the handler for .NET code (the ExtensionlessUrlHandler) by default only allows GET, POST, HEAD and DEBUG […]

龙生   21 Oct 2014
View Details

C#多线程完美解决方案

 

  运行上述代码,我们可以看到问题已经被解决了,通过等待异步,我们就不会总是持有主线程的控制,这样就可以在不发生跨线程调用异常的情况下完成多线程对winform多线程控件的控制了 from:http://blog.csdn.net/windflow/article/details/8693291

龙生   19 Sep 2014
View Details

使用Log4net记录日志

首先说说为什么要进行日志记录。在一个完整的程序系统里面,日志系统是一个非常重要的功能组成部分。它可以记录下系统所产生的所有行为,并按照某种规范表达出来。我们可以使用日志系统所记录的信息为系统进行排错,优化系统的性能,或者根据这些信息调整系统的行为。 Log4net是一个很著名的开源的日志记录组件。官方网址为:http://logging.apache.org/log4net/ ,使用Log4net能够很简单的为我们的程序添加日志记录功能。下面我们先通过一个网站例子来说明如何在.net中使用log4net。 创建日志记录步骤 第一步, 当然是添加log4net.dll的引用啦,我这里提供一个log4net的dll文件,懒得去官网下的可以到这里下http://www.vdisk.cn/down/index/7509396A7366 第二步, 在AssemblyInfo.cs文件中添加下面一句话: 1 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)] 这句话的意思是log4net会自动寻找配置文件App.config或Web.config从而获得并加载其中的配置信息。如果想log4net随时监视配置文件以便重新加载的话就要这样写按照上面一样写(winform程序ConfigFile为App.config)。 第三步, 配置Web.config。

上面这段配置取自周公,配置的说明上面已经注释的比较详细了。 第四步, 在程序中记录信息。我们在项目下Default.aspx的Page_Load方法加入如下代码:

然后运行项目,可以发现在c:\log4netfile.txt中已经记录了一条日志信息:

通过上面这几步我想您已经能够为程序创建一些简单日志记录功能了。下面我们再来详细说说log4net其他的一些使用方法与特点。 log4net详细说明 这里我通过问答的形式来说明log4net的一些应用。 1.log4net总共有几种记录方式,每种方式该如何配置与使用? Log4net目前支持的输出方式包括:

  可以看到目前支持的方式还是很多的,我这里调几个认为常用的做个例子。 1.文件的方式我们上面已经讲过了,这里不再做例子了。 2.数据库方式: 首先,添加数据库记录appender

然后建立c:log4net.mdb 数据库,并在代码中启用数据库记录方式:

这样日志就被记录到数据库中了。 2.log4net如何过滤我想要的日志信息,比如一个日志中只记录程序错误日志? 这个需求可以通过配置filter来实现。具体操作如下: 全局方式: 这种方式会将级别应用于所有的日志输入方式。具体操作为在root节点下添加:

这样对于所有的日志记录方式,所有地域ERROR级别的都不会被记录了。 单独配置级别方式:       该方式不会影响其他的日志输入方式。方法如下为,在具体的appender下添加filter:

这种方式可以配置记录级别的方位,如果只需要记录一种,则最大和最小设置一样就行了。 3.你上面的日志输出格式我不喜欢,如何在log4net中配置我想要的日志输出格式? log4net的输入格式定义在每个appender的layout中。具体的有以下内置可选项: %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息 %n(new line):换行 %d(datetime):输出当前语句运行的时刻 %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数 %t(thread id):当前语句所在的线程ID %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等 %c(class):当前日志对象的名称,例如: %f(file):输出语句所在的文件名。 %l(line):输出语句所在的行号。 %数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。 通过这些东西,你可以任意组合你喜欢的输出格式内容。   4.有没有方式控制程序自动按日期记录日志信息,即每天的日志都在不同的日志文件中? 其实这种方式对应于一种特定的记录方式:RollingFileAppender。这种方式也是基于文件记录的,不过他提供更加灵活的日志记录方式。具体说来他可以按日志文件的大小或者日志记录的时间进行自动变换日志文件。 按每天不同的日期进行记录分类:

按照日志文件的大小进行变换,通过这种方式可以有效降低日志文件体积膨胀的问题:

最后从网上找了一段写日志的原则,感觉还是很好的: 【写日志的原则】 Ⅰ.在catch后,把异常写入日志. Ⅱ.在调用第三方控件的开始和结束处. Ⅲ.在连接数据库的开始结束处. Ⅳ.除非必要,不要在循环体中加入日志,否则一旦出问题可能导致日志暴增. Ⅴ.在自己认为很重要的逻辑处写入日志.   如果要将log方法写在类库里面,那么可以参考这篇文章http://hi.baidu.com/sjbh/blog/item/10cda8d689fb0c3807088b87.html from:http://www.cnblogs.com/qianlifeng/archive/2011/04/22/2024856.html

龙生   02 Sep 2014
View Details

C#编写Windows服务程序图文教程

Windows Service这一块并不复杂,但是注意事项太多了,网上资料也很凌乱,偶尔自己写也会丢三落四的。所以本文也就产生了,本文不会写复杂的东西,完全以基础应用的需求来写,所以不会对Windows Service写很深入。 本文介绍了如何用C#创建、安装、启动、监控、卸载简单的Windows Service 的内容步骤和注意事项。 一、创建一个Windows Service 1)创建Windows Service项目 2)对Service重命名 将Service1重命名为你服务名称,这里我们命名为ServiceTest。 二、创建服务安装程序 1)添加安装程序 之后我们可以看到上图,自动为我们创建了ProjectInstaller.cs以及2个安装的组件。 2)修改安装服务名 右键serviceInsraller1,选择属性,将ServiceName的值改为ServiceTest。 3)修改安装权限 右键serviceProcessInsraller1,选择属性,将Account的值改为LocalSystem。 三、写入服务代码 1)打开ServiceTest代码 右键ServiceTest,选择查看代码。 2)写入Service逻辑 添加如下代码:

这里我们的逻辑很简单,启动服务的时候写个日志,关闭的时候再写个日志。 四、创建安装脚本 在项目中添加2个文件如下(必须是ANSI或者UTF-8无BOM格式): 1)安装脚本Install.bat

2)卸载脚本Uninstall.bat

3)安装脚本说明 第二行为启动服务。 第三行为设置服务为自动运行。 这2行视服务形式自行选择。 4)脚本调试 如果需要查看脚本运行状况,在脚本最后一行加入pause 五、在C#中对服务进行控制 0)配置目录结构 简历一个新WPF项目,叫WindowsServiceTestUI,添加对System.ServiceProcess的引用。 在WindowsServiceTestUI的bin\Debug目录下建立Service目录。 将WindowsServiceTest的生成目录设置为上面创建的Service目录。 生成后目录结构如下图 1)安装 安装时会产生目录问题,所以安装代码如下:

2)卸载 卸载时也会产生目录问题,所以卸载代码如下:

3)启动 代码如下:

4)停止

5)暂停/继续

6)检查状态

六、调试Windows Service 1)安装并运行服务 2)附加进程 3)在代码中加入断点进行调试 七、总结 本文对Windows service的上述配置都未做详细解释,但是按上述步骤就可以制作可运行的Windows Service,从而达到了工作的需求。 FROM:http://www.cr173.com/html/15350_1.html

龙生   01 Sep 2014
View Details
1 29 30 31 43