‘C#’ 分类的存档
[转载]利用log4net记录操作日志 – justconnor – 博客园. 1,目的:将用户操作日志写入SQL server 数据库中 2,实现步骤: 一,下载log4net.dll (推荐从官网下载 http://logging.apache.org/log4net/download_log4net.cgi) 二,在项目中引用 log4net.dll 三,添加一个配置文件:我这里命名为 log4net.config(也可以在web.config里面配置为便于管理故新建了一个配置文件) View Code <!–?xml version="1.0"?–> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net "></section> <!–这里是表示是记录1 条到缓冲区,满1条后再写入SQL server 可根据需要自定义配置–> 四,在项目的 AssemblyInfo.cs 文件的指定log4net 的配置文件路径 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 五,自定义记录函数 View Code public static void Operate_Log(string operateType, string describe) { log4net.ILog logToSQL = log4net.LogManager.GetLogger("iNotes"); [...]
转载LINQ学习扩展方法,委托,Lambda表达式 第二篇 – 韩迎龙 – 博客园. LINQ基本查询操作符-获取数据 (1) select() 语法是: public static IEnumerable<TResult> select<TSource,TResult>( this IEnumerbale<TSource> source. Func<TSource,TResult> selector) 说明:1) select方法本身是一个泛型扩展方法 2) 它作用于IEnumerable<TSource>类型 3) 他只接受一个Func<TSource,TResult>类型参数 4) Func<TSource,TResult>是一个泛型委托,位于System名字的空间下,System.Core.dll中,在这里Selector是一个提取器。 (2) 举例说明,先定义一个静态类ExtraClass,然后再静态类中在定义一个静态的扩展方法,实现输出信息。代码如下: public static class ExtraClass { //为IEnumerable提供输出的方法 public static void Print(this IEnumerable<string> ie) { IEnumerator<string> result = ie.GetEnumerator(); while (result.MoveNext()) [...]
[转载]HttpClient + ASP.NET Web API, WCF之外的另一个选择 – dudu – 博客园. WCF的野心造成了它的庞大复杂,HTTP的单纯造就了它的简单优美。为了实现分布式Web应用,我们不得不将两者凑合在一起 —— WCF服务以HTTP绑定宿主于IIS。 于是有了让人晕头转向的配置、让人郁闷不已的调试,还有那ServiceContract, DataContract, EnumMember…还有还有,不要在using语句中调用WCF服务… 于是经常自问:拿着牛刀削苹果有必要吗?废话,当然没有必要,水果刀在哪里? 微软看着这么多人拿着牛刀削苹果,自己也看不下去了,于是,一种水果刀横空出世 —— ASP.NET Web API。 最近我们在实际开发中有个地方用WCF太麻烦,就小试了一下水果刀,感觉还不错。 下面用一个简单的示例分享一下ASP.NET Web API水果刀的用法。 服务端ASP.NET Web API的实现 需要准备的工具:Visual Studio 2010, NuGet 1. 新建一个空的ASP.NET Web Application项目。 2. 通过NuGet添加ASP.NET Web API的引用,在NuGet中搜索时要用“AspNetWebApi”(用“ASP.NET Web API”是搜索不到的),然后选择ASP.NET Web API(Beta)进行安装。 3. 添加Global.asax,在Application_Start中注册Web API的路由,在Global.asax.cs中添加如下代码: protected void Application_Start(object sender, EventArgs e) { RouteTable.Routes.MapHttpRoute("WebApi", "api/{controller}/{action}/{id}", [...]
[转载]嘿,原来不认识你,想不到你这么好用—说说.NET中被我忽视的方法 – Gyoung – 博客园. NET中有些方法以前没有接触过,但用过了之后让人眼前一亮,哇,原来你这么好用。 下面就说说被我忽视过的方法。当然,每个人的编程经历,涉猎面及对.NET的认知程度都不一样。所以,这只是一家之言,肯定有很多不足之处,欢迎大家批评指正。 1. ADO.NET类 DataTable.Merge() 如何合并两张表?自己以前写的方法: private void UniteTable(DataTable sourceTable, DataTable targetTable) { foreach (DataRow row in sourceTable.Rows) { DataRow newRow = targetTable.NewRow(); //将sourceTable中row的值赋给对应的targetTable中的row newRow["column1"] = row["column1"]; //… targetTable.Rows.Add(newRow); } } 哎,这个方法很傻很天真吧,其实DataTable中早就提供了合并两张表的方法,就是DataTable.Merge()。合并两张表,只要一条语句就行: targetTable.Merge(sourceTable); DataRow.ItemArray 结构相同的情况下,如何将一行的值赋给另一行?自己以前都这样写: DataRow row1 = table1.Rows[0]; DataRow row2 = table2.Rows[0]; row1["column1"] = row2["column1"]; row1["column2"] = row2["column2"]; //… [...]
[转载]开发托管ActiveX或第三方程序托管插件时调试问题解决方法 – BinSys – 博客园. 问题描述: 用VS2010开发ActiveX控件,项目属性里,调试设置为: 启动外部程序:C:\Program Files\Internet Explorer\iexplore.exe 命令行参数:-noframemerging -nohangrecovery http://localhost/PrintSettingTest.htm 目标框架设置为2.0时,可调试,断点可命中,模块列表可看见待调试托管dll已经加载,一切正常。 但之后按照部署要求,目标框架统一改为.NET 4.0,问题出现了,无法命中任何断点,调试时模块列表为空,初步判断VS2010调试器加载调试引擎的 框架版本选择错误,未正确识别,google了一大堆,找到建立iexplore.exe.config并加入如下配置,强制指定clr版本的方法: <!–?xml version="1.0"?–> 测试无效。又建立了TestActiveX.dll.config,内容如上,同样无效。 后尝试在欲调试代码前加入代码: Debugger.Launch(); Debugger.Break(); 运行,出现如下错误: 听他的,分离再附加: 可见模块正常加载,可以调试并命中断点。 但每次都要手动附加貌似非常麻烦哦,继续google,找到好方法: http://through-the-interface.typepad.com/through_the_interface/2010/04/hitting-breakpoints-in-net-class-libraries-while-debugging-with-visual-studio-2010.html 解决方法: 因为我的托管dll的宿主是IE,那么我在解决方案上点右键,添加-》现有项目,定位到 C:\Program Files\Internet Explorer\ 并选择 iexplore.exe 在iexplore项目上右键: 然后把iexplore设为启动项。 注意,到此并未结束,因为IE8开始每个网页Tab都会开新进程,导致当只打开一个网页调试会出现一个框架进程,我们得取消他。使用下面的注册表取消: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN] "TabProcGrowth"=dword:00000000 ;当不调试时用以下字段代替以上字段 ;"TabProcGrowth"=- 把注册表另存为REG文件,并导入。这下你就可以痛痛快快地调试托管dll了。


