01_C#.NET
文章平均质量分 92
zztfj
钓鱼
展开
-
nginx反向代理.NetCore开发的基于WebApi创建的gRPC服务
nginx反向代理.NetCore开发的基于WebApi创建的gRPC服务原创 2024-04-21 10:25:10 · 1205 阅读 · 0 评论 -
C#调用Win32API 的高级用法:结构体内存布局 回调函数 指针参数以及数据类型映射
结构体内存布局:许多受管辖的动态链接库函数期望你能够传递一个复杂的参数类型给函数,譬如一个用户定义的结构类型成员或者受管辖代码定义的一个类成员,这时你必须提供额外的信息格式化这个类型,以保持参数原有的布局和对齐。C#提供了一个StructLayoutAttribute类,通过它你可以定义自己的格式化类型,在受管辖代码中,格式化类型是一个用StructLayoutAttribute说明的结构...原创 2020-02-18 12:48:03 · 1022 阅读 · 0 评论 -
.NET动态创建对象的小结
.NET动态创建对象的小结我们新建一个Console控制台项目。然后,添加一个示范类,本文中将通过对这个示范类的操作来进行说明:public class Calculator { private int x; private int y; public Calculator(){ x = 0; y = 0; }原创 2012-03-16 10:35:25 · 2954 阅读 · 0 评论 -
在.NET中操作数字证书
.NET为我们提供了操作数字证书的两个主要的类,分为为: System.Security.Cryptography.X509Certificates.X509Certificate2类, 每个这个类的实例可以表示一个证书;System.Security.Cryptography.X509Certificates.X509Store类,可以对保存在计算机安全区域内的证书进行add/rem转载 2010-11-26 11:06:00 · 1301 阅读 · 0 评论 -
创建为ClickOnce清单签名的.pfx格式数字证书
使用vs2005自动创建的.pfx数字证书默认有效期只有一年,并且“颁发者”、“颁发给”均为当前机器名和当前登陆用户名的组合,其实我们完全可以创建更友好的.pfx数字证书。打开Microsoft .NET Framework 的SDK命令提示,按以下步骤操作:1、创建一个自我签署的X.509证书(.cer)和一个.pvk私钥文件,用到makecert工具,命令如下:makecert转载 2010-11-26 10:58:00 · 1369 阅读 · 0 评论 -
C#中遍历所有的性能计数器PerformanceCounter
C#中遍历所有的性能计数器PerformanceCounter 在C#中性能计数器对应的类型为PerformanceCounter,在使用该类型的时候,需要知道该计数器的CategoryName和CounterName,对于常用的Processor,Network之类的,还能有不少参考资料供参考查询。如果是一个陌生点的计数器,光是查找计数器的CategoryName,CounterName原创 2012-02-02 14:30:20 · 7269 阅读 · 0 评论 -
Webbrowser控件使用的经验和技巧
Webbrowser控件使用的经验和技巧1.屏蔽错误脚本提示。修正了WebBrowser控件本身屏蔽错误不全的问题,由启明提出,原文:http://www.cnblogs.com/hobe/archive/2007/01/14/619906.html2.扩展NewWindow事件。修正了WebBrowser控件本身的NewWindow事件不提供新窗口Url的问题,通过新增的BeforeNe原创 2009-11-01 16:16:00 · 2211 阅读 · 1 评论 -
API调用的福音——P/Invoke自动生成API声明
在网上看到很多网友在.NET程序中调用Win32 API,或者调用自己的VC DLL里面提供的函数的时候,总是被生成正确的C函数在C#中的正确声明而困扰,而生成C++中结构体在C#中的声明 - 天,没有什么比这个更让人恶心的事情了。因为:1. 如果你的结构体里面包含 TCHAR字符串成员的话,需要考虑ANSI和Unicode DLL的情形。2. 如果你的结构转载 2010-11-18 10:26:00 · 1293 阅读 · 1 评论 -
C#中webBrowser加载页面中访问不同域的iFrame引发System.UnauthorizedAccessException异常的解决办法
使用WebBrowser打开一个页面,在该页面中有一个iFrame,在WebBrowser完全打开页面后,获取该iFrame的时候总是引发System.UnauthorizedAccessException异常。 Console.WriteLine(this.webMain.Document.Window.Frames[0].Url);“this.webMain.Document.Wi原创 2012-01-15 17:57:05 · 10752 阅读 · 4 评论 -
创建一个既支持WSDL又支持REST的WCFWebService
创建一个既支持WSDL又支持REST的WCFWebService首先回顾一下REST,WCF和WebService这三个基本概念。REST:REST最核心的概念是“资源”,一个uri代表一个特定的资源。使用它的一个好处就是客户端只需要发送一个简单的http包即可操作服务器的资源,没有了SOAP协议包的复杂,以至于使用Javascript就可以轻松的调用REST的服务。WCF:它是一个分原创 2011-11-30 10:59:33 · 7385 阅读 · 2 评论 -
WebService、WcfService和WcfRestService数据包的格式总结
WebService、WcfService和WcfRestService数据包的格式总结准备工作:使用VS 2010分别创建Asp.net WebService工程,WcfService工程,WcfRestService工程(工程模版需要在线下载,名称为“WCF REST Service Template 40(CS)”)和既支持WSDL又支持Rest的WcfService(创建方法会在下原创 2011-11-25 15:24:40 · 3297 阅读 · 0 评论 -
使用.NET进行中文繁简转换的两种方法
方法一:调用VB.NET的类库。引用Microsoft.VisualBasic.dll。中文繁体 = Microsoft.VisualBasic.Strings.StrConv(中文简体, Microsoft.VisualBasic.VbStrConv.TraditionalChinese, 0); 方法二:使用微软提供的Visual Studio International P原创 2011-11-14 23:53:22 · 2682 阅读 · 0 评论 -
多线程生成随机数
问题描述:在多线程情况下,调用Random的Next方法获取随机数较长时间后,获取的随机数将都是0。 解决办法:1、 使用RandomNumberGenerator类获取随机数2、 把Random进行线程安全的封装class ThreadSafeRan原创 2011-10-13 15:51:57 · 2107 阅读 · 0 评论 -
ASP.NET MVC的异步编程
ASP.NET MVC的异步编程 在上篇《ASP.NET中的异步编程》http://blog.csdn.net/zztfj/article/details/6837985的文章中,我们已经体会到异步编程给网站带来的高性能,高扩展性。现在ASP.NET已经发展到了MVC原创 2011-10-12 15:36:07 · 4688 阅读 · 0 评论 -
ASP.NET中的异步编程
ASP.NET中的异步编程为什么要在ASP.NET中使用异步编程? ASP.NET 使用公共语言运行库 (CLR) 线程池中的线程来处理请求。只要在线程池中存在可用线程,ASP.NET 调度传入请求就不会有任何麻烦。但是一旦线程池处于饱和状态(即所有池中的线程忙于原创 2011-09-30 16:55:04 · 5548 阅读 · 0 评论 -
C#中的异步调用及异步设计模式(二)——基于 IAsyncResult 的异步设计模式
三、基于 IAsyncResult 的异步设计模式(设计层面)IAsyncResult 异步设计模式通过名为 BeginOperationName 和 EndOperationName 的两个方法来实现原同步方法的异步调用,如 FileStream 类提供了 BeginRea原创 2011-09-26 18:51:20 · 2803 阅读 · 0 评论 -
C#中的异步调用及异步设计模式(三)——基于事件的异步模式
四、基于事件的异步模式(设计层面)基于事件的C#异步编程模式是比IAsyncResult模式更高级的一种异步编程模式,也被用在更多的场合。该异步模式具有以下优点:· “在后台”执行耗时任务(例如下载和数据库操作),但不会中断您的应用程序。原创 2011-09-26 18:53:33 · 8860 阅读 · 2 评论 -
.Net中带时区的时间格式转换
.Net中带时区的时间格式转换在从WMI中获取信息的时候,发现取出的时间格式挺特殊的(比如:20120321112421.535286+540),直接进行DateTime.TryParse转换还不能正常转换,经过调查才知道这是DMTF格式的时间格式。string s = "20120321112421.535286+540";Console.WriteLine( ManagementD原创 2012-04-01 11:41:15 · 4297 阅读 · 0 评论 -
.NET中GC.Collect该在什么时候调用?
.NET中GC.Collect该在什么时候调用? 最近做的一个项目,是从VB升级到VB.NET的代码,所以,数据库操作使用的是相对较老的方式OO4O (Oracle Objects for OLE)。其中,在较大的一个外部循环中调用一个函数,在该函数中执行了一个SQL查询,但是该外部循环执行到二百多次的时候出现了“ORA-01000:超出最多允许打开的游标数”的错误。查看代码,打开的Rec原创 2012-07-13 10:16:58 · 8280 阅读 · 1 评论 -
.NET与外界交互字符串的处理
.NET与外界交互字符串的处理在.NET的应用程序中,字符串的表示都是由Unicode UTF-16字符数组表示。然而,你可能经常需要使用诸如UTF-8之类的其他格式的编码来与外部世界进行通信,这时需要一些转化工作。现在假想一下有如下的应用场景:场景一:你的.NET应用程序需要从一个指定的文件夹中读取一些其他系统生成的数据文件,然后对读取的数据进行字符串操作。场景二:你的.NET应原创 2012-08-08 10:59:47 · 1098 阅读 · 0 评论 -
.Net 下未捕获异常的处理
在开始本文之前,让我们来看看.Net在什么情况下会产生未捕获异常。未捕获异常从定义上说就是结构化异常处理未能捕获的异常。通俗的讲就是发生在Try Catch块意外的异常。那么是不是我们在Main函数中加一个Try Catch 块就可以捕获全部未捕获异常了呢?答案是否定的。这里面有两种情况无法通过这种方法捕获:1. GC 产生的异常,这种异常通常因为Finalize函数中引发未捕获异常引翻译 2017-06-22 00:34:36 · 1122 阅读 · 1 评论 -
SQL模糊查询的参数化
用参数化SQL语句进行模糊查找,一开始的使用方法不正确,摸索了好一会。1、使用参数化SQL语句进行模糊查找的正确方法: //定义sql语句 string sql = "SELECT StudentID,StudentNO,StudentName FROM Student WHERE StudentName like @StudentName"; //给参原创 2014-11-05 09:03:03 · 6829 阅读 · 1 评论 -
WPF 提示"该密钥文件可能受密码保护。若要更正此问题,请尝试再次导入证书,或手动将证书安装到具有以下密钥容器名称的强名称"的解决方法
1.打开Visual Studio 命令提示(2010): 开始->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio 命令提示(2010)2.用cd命令定位到当前密钥文件xxxx.pfx的目录 cd /d 例如: cd /d "C:\administrator\My Documents\Visual Studi原创 2014-02-12 09:42:54 · 6135 阅读 · 0 评论 -
.Net 4.0中处理Corrupted State Exceptions异常
作为程序员,我想很多人应该都有过跟异常打交道的经历。而且相信也有很多人也都写过catch(Exception e){//blabla}这种把所有未知异常一股脑儿捕获并处理掉的代码吧。不管是为敷衍客户也好,让程序继续运行以避免糟糕的用户体验也罢,在微软眼中,这种处理方式都是不对滴,特别是当你的程序是作为一个插件寄存在别的程序如VS,Offcie中时,这种情况下对有些严重的异常如访问冲突我们更应当是让原创 2013-10-17 09:48:02 · 6235 阅读 · 0 评论 -
.Net提供的三种序列化和反序列化方法
序列化和反序列化我们可能经常会听到,其实通俗一点的解释,序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。我想最主要的作用有:1、在进程下次启动时读取上次保存的对象的信息 2、在不同的AppDomain或进程之间传递数据 3、在分布式应用系统中传递数据......在C#中常见的序列化的方法主要也有三个:Bina转载 2010-01-19 23:50:00 · 4212 阅读 · 4 评论 -
.NET平台下几种SOCKET模型的性能介绍
Socket + Threads/ThreadPool大概性能:小于1500个连接 实现:Accept一个Socket,就交给一个线程去管理,比较笨,但也比较有效,因为是同步方式,控制起来很方便。高级点的,就是交给一个线程池去管理,线程池由系统自动托管,省去了开销线程的时间。一般小型项目,用这个完全足够,开发也简单。但要注意,如果若干Socket长时间占用线程池中的线程,同时其它连接数又比原创 2013-08-20 15:52:17 · 1023 阅读 · 0 评论 -
WPF发布程序后未授予信任的解决办法
WPF发布程序后未授予信任的解决办法基于浏览器的WPF应用程序由于需要比较高的操作权限,所以在项目的安全性属性中选择了“这是完全可信的应用程序”选项。可是,在发布部署后,在其他电脑上打开xbap文件的时候,提示“未授予信任无法部署该应用,因为它不受信任并且可能不安全。”的错误。打开log文件发现在下载程序时候触发了TrustNotGrantedException异常。 解决办法:大原创 2013-08-07 17:47:24 · 6970 阅读 · 0 评论 -
.Net TcpClient读取超时后Connected变为false的bug
当设置了TcpClient.GetStream的ReadTimeout后,在Read超时后,将发现该TcpClient的Connected变成false。但是,此时如果有数据过来还能正常接收。不过,如果该现象发生在TcpListener接收的TcpClient中的时候,该TcpClient.GetStream还能正常接收数据,却不能发送数据。发送的时候将提示“未连接”的错误。原创 2013-06-26 20:05:27 · 2840 阅读 · 0 评论 -
.NET 多个程序使用一个安装包进行部署
多个程序使用一个安装包进行部署1、 创建程序安装项目。在解决方案点击右键,“新建项目”——在其他项目类型中选择项目类型为“安装项目”。2、 创建一个类库项目,并在该项目中添加一个安装程序类,在其中进行安装过程中的逻辑处理。在类库项目中右键,“新建项”——在“添加新项”对话框中选择“安装程序类”。3、 传值给安装程序Installer类,以便其进行代码控制。a)原创 2013-05-29 09:30:04 · 2249 阅读 · 4 评论 -
用.NET SqlBulkCopy类执行批量复制
在不同数据源之间转移数据是一个常见的开发任务。如果你应用过SQL Server,就会熟悉bcp(批量复制)命令。它允许你快速将大型文件批量复制到SQL Server表或视图中。在.NET Framework 1.1中,可以通过SqlCommand对象利用bcp,但.NET Framework 2.0中增加了SqlBulkCopy类来简化这个繁琐的过程。SqlBulkCopy类原创 2013-01-16 13:20:05 · 1318 阅读 · 0 评论 -
在WCF中使用事务处理
WCF在预定义绑定中实现了标准的WSAtomicTranscation(WS-AT)协议和Microsoft专有的OleTx协议,这些协议可以用来在消息中加入事务状态的信息。我们可以指定将一个操作的代码放在事务范围里执行。我们需要在Binding的配置节里指定,transcationFlow=true: 注意:任何被指定的必原创 2012-09-26 13:13:18 · 928 阅读 · 0 评论 -
使用WindowsService为宿主实装WCF 服务
由于需要,需要把WCF服务宿主在windows service 中,下面说明一下,Demo的步驟:1. 写WCF服务 创建一个接口类,与一个实现类。接口类上打上[ServiceContract]标签,需要暴露的服务方法上打上[OperationContract](注意:增加System.ServiceModel 类的引用代码如下:using System;原创 2012-08-28 00:31:23 · 7300 阅读 · 0 评论 -
使用 WCF REST 编程模型创建接受任意数据的服务
有时,开发人员必须完全控制从服务操作返回数据的方式。 当服务操作必须以 WCF 不支持的格式返回数据时,就需要这样做。 本主题讨论如何使用 WCF REST 编程模型创建接收任意数据的服务。实现服务协定定义服务协定。 接收任意数据的操作必须具有一个类型为 Stream 的参数。此外,此参数必须为传入请求正文的唯一参数。 本示例中介绍的操作还采用一个文件名原创 2012-08-29 22:47:22 · 1073 阅读 · 0 评论 -
使用 WCF Web HTTP 编程模型创建返回任意数据的服务
有时,开发人员必须完全控制从服务操作返回数据的方式。 当服务操作必须以 WCF 不支持的格式返回数据时,就会出现这种情况。 本主题讨论使用 WCF WEB HTTP 编程模型来创建此类服务。此服务具有一个返回流的操作。 实现服务协定定义服务协定。 该协定名为 IImageServer,具有一个名为 GetImage 的方法,该方法返回 Stream。原创 2012-08-29 22:45:35 · 2675 阅读 · 0 评论 -
.NET中几个最有用的委托
在.NET中,在使用委托前,需要使用delegate关键字来定义委托,然后在实例化,再执行之。在每次使用前,都需要定义该委托类型,稍嫌麻烦和多余。在.NET 4.0中,有了如下的几个泛型委托,就省去了您定义委托的麻烦了。分别有:public delegate void Action();public delegate void Action(T obj);public dele原创 2012-08-12 22:42:32 · 1258 阅读 · 0 评论 -
C#中的异步调用及异步设计模式(一)
近期项目中使用了不少异步操作,关于“异步”做个总结。总结的内容大部分都来自于MSDN,还有一些自己的心得。关于“异步”的使用可分为:使用层面和类库设计层面,细分如下:一、使用异步方式调用同步方法(使用层面)。二、使用 IAsyncResult 调用异步方法(使用层面)原创 2011-09-26 18:44:04 · 3116 阅读 · 0 评论 -
.NET中非对称加密算法的密钥的存储
.NET中非对称加密算法的密钥的存储 在.NET中使用RSA算法进行数据加密和签名,很多时候,我们需要重复的使用一组密钥,因此就需要将这组密钥保存起来。接下来,我给大家介绍3种在.Net中保存密钥的方法。 第一种方法:将密钥导出保存为本地文件。 首先要强调的是,出原创 2011-08-03 10:23:13 · 2327 阅读 · 3 评论 -
键盘输入工作原理
键盘输入工作原理 Windows 窗体通过引发键盘事件来处理键盘输入以响应 Windows 消息。大多数 Windows 窗体应用程序都通过处理键盘事件来以独占方式处理键盘输入。但是,必须了解键盘消息的工作方式,才能实现更高级的键盘输入方案(如在按键到达控件之前截获它们)。本主题描述 Windows 窗体能够识别的按键数据的类型,并概述键盘消息的传送方式。有关键盘事件的信息,请转载 2009-12-30 15:50:00 · 4639 阅读 · 0 评论 -
textbox中只允许输入数字和小数点
把Textbox的KeyPress事件设置为如下方法,就可以实现限制输入 /// /// 只能输入数字(含负号小数点) /// /// /// public static void OnlyEnterNumber(object sender, KeyPressEventArgs e)原创 2009-12-30 14:52:00 · 1108 阅读 · 0 评论 -
C#中键盘事件在WndProc函数之前的处理流程
窗体和控件在WndProc处理函数处理键盘消息之前,都要进行预处理。本文就介绍在键盘事件被WndProc处理之前所经过的处理过程。以下介绍是文本描述的示意介绍,和真正的代码流程(TranslateAccelerator,TranslateMessage,DispatchMessage处理)有区别,仅仅便于理解。 在一个私有函数中进行消息的内部处理,流程如下: internal Pr原创 2009-12-30 17:26:00 · 5738 阅读 · 0 评论