随笔分类 - asp.net
摘要:核心提示:大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访问量很大的网站,利用静态文件可提高服务器的运行稳定和速度...大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访问量很大的网站,利用静态文件可提高服务器的运行稳定和速度,坏处就是生成列表的时候会因为增加一条记录从而需要所有相关的列表进行重构
阅读全文
摘要:最近由于公司项目比较忙,本来早就准备写EF部分可是一直没时间,步入正题吧,前一篇讲的是数据访问层中ADO的实现部分,接下来我们讲一下EF部分的实现。先说一下写他的目的: 为了使我们在开发中降低程序员的工作量和代码行数,同时提供一个统一格式和便于维护的数据访问调用框架,我们需开发一套数据访问层。实现功能: 实现增加、修改、删除、带事务新增、 带事务修改、 带事务删除、分布式事务处理等操作。实现原理: 使用新类 EFTranParams(下面提供源码) 构建一个EF事务处理参数,用Action 和Func 将参数传递给数据访问层,已委托的方式在事务中执行相关的方法,返回处理结果。代码实现:...
阅读全文
摘要:这是我去年给公司写的一个EF/ADO数据访问层,可以实现对多种数据库操作,代码中包含了一般的查询修改、事务和分布式事务等操作。这篇文章我们来介绍一下ADO部分的处理。下一篇EF篇(敬请关注)ADO部分一般的查询修改都比较简单,这里就不详细介绍了,只列出方法名(每个方法都进行了重载),方法如下:View Code public DataTable ExecuteDataTable(string commandText, CommandType commandType, string tableName, DbTransaction transaction, params DbParameter[
阅读全文
摘要:一般常用的有CDM,PDM,UML建模,CDM可以转为PDM。支持正向[生成数据库]和逆向工程[从数据库中生成],并直接关联到到数据库中,PDM可以直接和数据库进行关联,并将数据库,表,视图,触发器等数据库对象生成到数据库中,也可将这些对象更新到PDM中。PowerDesigner的几个主要常用菜单是MODEL、DATEBASE、Tool,这三个菜单下命令使用比较多,要熟悉。PD 还可以用来画用例图,序列图,类图等UML图。也可以画企业架构图,软件应用架构图等等图形15个问题列表:No.1:是不是一定要从CDM开始设计,然后在进行PDM的设计?NO.2:工具栏palette不见了,如何把它找出
阅读全文
摘要:近期由于项目所需不得不研究Oracle数据库,回想上一次用Oracle还是07年的事情,实习时候做华晨宝马的项目简单接触了Oracle。这次的项目需要基于.NET平台,我个人的习惯是能用微软自带的就不用第三方的,基于这个原则先想到的ORM模型就是Entity Framework,于是动手尝试一下。默认情况Visual Studio 2010的.NET项目模板及类型模板中的Entity Framework是不支持Oracle数据库的,找了一圈发现第三方有些插件,但试了一下都不尽如人意,而Oracle官方也有一些工具可以对此做扩展,让Entity Framework支持Oracle数据库,接下来就
阅读全文
摘要:前面介绍了如何在.NET中使用RSA算法进行数据加密和签名,很多时候,我们需要重复的使用一组密钥,因此就需要将这组密钥保存起来。接下来,我给大家介绍3种在.Net中保存密钥的方法。第一种方法:将密钥导出保存为本地文件。首先要强调的是,出于安全性考虑,不建议使用这种方法保存私钥,如果使用,请在密钥导出的时候只导出公钥。RSACryptoServiceProvider对象提供了一个ToXmlString(bool includePrivateParameters)方法,我们可以使用此方法将密钥导出为一个xml格式的string,然后将其保存到一个文件中,这个方法的参数为true时会导出私钥,否则不
阅读全文
摘要:Html Agility Pack是用C#写的开源Html Parser。在抓取163首页(http://www.163.com)代码如下: HtmlWeb hw = new HtmlWeb(); string url = @"http://www.163.com"; HtmlDocument doc = hw.Load(url); doc.Save("mshome.htm");不过有点问题是抓取的Code乱码了。通过跟踪代码发现通过修改HtmlWeb.cs 中的第1466行(1.4.0.0版) 文件可以解决这个问题。方法名为:privateHttpSt
阅读全文
摘要:Assembly和AppDomain的一些关于动态加载程序集的函数有些令人头疼,但细细研究后还是可以将他们区分的。 这些函数大致可以分为四类:第一类:加载到Load Context内Load Context:Load Context是所有动态加载程序集首选应该被加载到的地方。它只能加载在AppDomain信息中的ApplicationBase目录以及附带的PrivateBinPath目录内的程序集(关于这两个目录:可以参考另一篇文章:http://www.cnblogs.com/mgen/archive/2011/05/02/2034371.html)执行这个操作的方法是: Ass...
阅读全文
摘要:程序如下:最重要的是两个函数Encrypt和Decrypt,分别执行加解密操作,使用MemoryStream来做CryptoStream的操作对象。使用者只需要记住加密前生成的加密密钥和初始向量(即Key和IV),使用这个Key和IV可以将byte[]进行加解密。至于字符串,用Encoding转换成byte[]就可以。加密方式是AES,当然可以根据自己需求修改成其他加密算法 运行截图:代码:using System; using System.Text; using System.IO; using System.Security.Cryptography; namespace ...
阅读全文
摘要:通过继承ConfigurationValidatorBase类,用户可以自定义一个配置系统的验证器,可是今天使用这种方法发现了一个问题:每个ConfigurationProperty在验证其实际值前,都要对其默认值先进行一次验证,注意这里只是验证一次,发生在验证第一个ConfigurationProperty的值之前。表现形式就好像静态构造函数似的。比如下面的ConfigurationSection和ConfigurationValidatorBase代码:(代码模拟验证年龄必须大于等于15岁,否则抛出异常)//自定义ConfigurationSection class AgeSec...
阅读全文
摘要:ConfigurationElementCollection.ElementName属性在MSDN的解释是这样:Gets the name used to identify this collection of elements in the configuration file when overridden in a derived class.获取在派生的类中重写时用于标识配置文件中此元素集合的名称。接着没有任何代码示例……根本看不懂了啊!!!后经过研究发现功能类似ConfigurationElementCollection.AddElementName属性(这个得在Configurat
阅读全文
摘要:.NET中的字典是用来存储多组”键和值”的容器,其中键必须有值且不能重复,值没有任何要求。 但是很多时候我们需要一种保存类似”键和键”的字典,比如字典中的一组对应a-b,从a键可以得到值b,同时也可以从b键得到值a。字典中的两组数据既都是值,也是键,因此必须都有值且不能重复,我们把这组值称为键1和键2,他们都可以通过一面而找到另一面。这样的话,添加操作需要确保键1和键2不能已经存在,编辑操作也需要注意被修改键值的新值的唯一性,比如这种字典中1的对应值是a,现在要想把1-a改成1-b,那么必须确保b在键2中不存在,因为如果继续将1-a被改成1-b,从另一面会出现两个键都是b的非法情况。这个类的名
阅读全文
摘要:今天遇到了这个问题,于是研究了一下。要解决这个问题,首先就要明白一些Session的机理。Session在服务器是以散列表形式存在的,我们都知道Session是会话级的,每个用户访问都会生成一个Session。那么服务器是怎么区分不同用户的Session?又是怎么将不同用户的Session与不同的用户绑定的呢?下面我们来研究一下,以下纯属我个人的理解,如有错误请指证。Session在服务器端是以散列表的形式存在的,区分每一个Session是通过SessionID来实现的,所以可以说这个SessionID是一个Key是一个全局唯一的值。我们可以通过ASP.NET来打印出SessionID,如下代
阅读全文
摘要:有时候,我们可能不会在网页中<script src="jquery.min.js" 来加载 Jquery 库,可能在用户点击某个按钮后,才去加载 Jquery 库。好处不用我说,节省带宽,提高访问速度,因为用户可能不会点击这个按钮,也就不需要 Jquery 。那么如何动态加载 Jquery 库呢?一般可以用 Document.write 来打印出,也可以用 Ajax ,也可以用我下面的这种方式:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/
阅读全文
摘要:代码如下: public static bool IsAjaxRequest(this HttpRequest request) { if (request == null) { throw new ArgumentNullException("request"); } return (request["X-Requested-With"] == "XMLHttpRequest") || ((request.Headers != null) && (r...
阅读全文
摘要:默认情况下http请求图片等文件IIS会直接提取资源并发送给客户端,我们要创建自己的HttpHandler来处理图片文件。如何实现:1.建立自己的HttpHandler新建一个类(MyHttpHandler)继承System.Web.IHttpHandler接口并实现相应的方法IsReusable 属性(返回一个值代表其他http请求是否可以使用当前继承了 System.Web.IHttpHander接口的类的实例);ProcessRequest(System.Web.HttpContext context)方法(用于处理用户自定义的要被处理的特殊的http请求)。其中的参数 System.W
阅读全文
摘要:如果你的Asp.Net程序执行时碰到这种错误:“验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。”那么说明你没有让你的应用程序使用统一的machineKey,那么machineKey的作用是什么呢?按照MSDN的标准说法:“对密钥进行配置,以便将其用于对 Forms 身份验证 Cookie 数据和视图状态数据进行加密和解密,并将其用于对进程外会话状态标识进行验证。”也就是说Asp.Net的很多加密,都是依赖于machineKey里面的
阅读全文
摘要:或许你还没有用到过分布式缓存,在web集群的情况下,它可以很好的让一部分常用数据常驻服务器内存而不用担心各台web不同步。下面稍微介绍一下beitmemcached对于.net的支持,官方参考http://code.google.com/p/beitmemcached/一个完整的操作步骤:1、点击上面页面的downloads,把Memcached_1.2.5.zip 和BeITMemcached_source_2008_05_31.zip两个压缩包下在下来。2、解压Memcached_1.2.5.zip ,它是memcached的服务器端。3、把Memcached_1.2.5复制到你指定的做为
阅读全文