18

Page Level Session (logic),类似ViewState的作用

在ASP.NET开发中,虽然ViewState使用起来很简单方便,但是ViewState也有一些限制和缺点,比如安全性和性能。 ViewState中的数据默认是使用base64进行编码从而保存到页面里,因此,虽然用户不能直接看到里面的数据,但是base64不是加密算法,只是一种编码算法,任何人都能对base64进行反编码,从而看到我们往ViewState里保存的数据。所以敏感机密数据不适合保存在ViewState中。 另一方面,由于ViewState保存在页面里,如果保存了较大数据量的话,比如含100条数据的dataset,你的页面打开就会很慢。不仅每次页面postback,ViewState都会在客户端和服务器端往返,造成网络传输数据量大,服务器端序列化和反序列化加重服务器负担。所以不推荐往ViewState中保存较大数据。 那么在ViewState不适合的地方用Session吧。 但是Session在作为pagelevel用的时候,由于其全局共享的特性,如果key重复的话,容易造成Session数据覆盖的问题。 可能的情况就是在浏览器的两个标签(Tab)中打开同一个页面,如果我们按照Session的正常的用法用的时候(Session["Key"] = value;),Tab1 中往Session存一个值,然后Tab2中往Session中存值的时候,由于key相同,会覆盖前一个值。如果你的用户不能接受这种情况的话,这就是一个很麻烦的问题,因为从IE7开始包括一些其他主流浏览器,Tab之间都是共享session的。 下面,我实现一个Page Level的Session来解决Key相同的问题。 ?View Code CSHARP1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 [...]

Author: jianyun
十二 21
Digg
Stumbleupon
Technorati
Delicious

TreeView出现的 TreeView_HoverNode error

有的时候会碰到javascript的runtime error: ‘ctl00_cph_Content_LinksTreeView_Data’ is undefined”. 页面load的时候,如果鼠标放在treeview上就会有错误,不在treeview上又没有错误。 调试后会发现错误是在下面这段语句抛出的onmouseover=”TreeView_HoverNode(ctl00_cph_Content_LinksTreeView_Data, this)” 解决方法:可以给treeview套一个div,初始设为隐藏,等页面load完后再设为显示。 ?View Code HTML1 2 3 4 5 6 7 <div id="divTreeView" style="display:none;">   <asp:TreeView ID="TreeView1" …   </asp:TreeView>   </div> ?View Code HTML1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <head>   <script language="javascript">   [...]

Author: jianyun
十二 18
Digg
Stumbleupon
Technorati
Delicious

利用iTextSharp进行多个PDF文件流的合并

请引用iTextSharp的dll和namespace ?View Code CSHARP1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 public static byte[] MergePdfFiles(List<byte[]> pdfInputs) { using (MemoryStream stream = new MemoryStream()) { Document document = new Document(); PdfWriter writer = PdfWriter.GetInstance(document, stream); document.Open(); [...]

Author: jianyun
十二 15
Digg
Stumbleupon
Technorati
Delicious

.Net remoting error “The input stream is not a valid binary format.”

在开发.Net Remoting的程序时,发现了如下异常消息: The input stream is not a valid binary format. The starting contents (in bytes) are: 53-79-73-74-65-6D-2E-54-79-70-65-4C-6F-61-64-45-78 … Server stack trace: at System.Runtime.Serialization.Formatters.Binary.SerializationHeaderRecord.Read(__BinaryParser input) at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadSerializationHeaderRecord() at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run() at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) at System.Runtime.Remoting.Channels.CoreChannel.DeserializeBinaryResponseMessage(Stream inputStream, IMethodCallMessage [...]

Author: jianyun