RSS 2.0 Feed
2004-10 Entries
摘要:这两天,在作的一个程序,需要向一个PHP的程序提交一些数据信息,PHP程序那里其中有一个参数是利用PHP的 sha1 函数作签名的。对应PHP这个函数的.net 实现为:          ///          /// 以下代码等效于 PHP 的 SHA1() 代码          ///          ///          ///          public static string SHA1Sign(string data)          {               byte[] temp1 = Encoding.UTF8.GetBytes(data+PartnerKey);                 SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();               byte[] temp2 = sha.ComputeHash(temp1);               sha.Clear();                             // 注意, 不能用这个               //string output = Convert.ToBase64String(temp2);                 string output = BitConverter.ToString(temp2);               output = output.Replace("-","");               output = output.ToLower();               return output;          }   需要注意的是这里sha加密后,出来的结果需要特殊处理一下,才是PHP函数sha1的结果。由于PHP程序是另外一个公司开发的,为了让这两个函数出来的结果一样,忙活了好久。...[阅读全文]

posted @ | Feedback (6) | Filed Under [ .net 编程心得 ]

摘要:VS.net 2003 中,在ASPX 文件中,下面两种写法,没有任何问题:     <%#DataBinder.Eval(Container.DataItem, "Title")%>     <%#Container.DataItem("Title")%>   VS.net 2005 中(Beta 1)中,则会有一个校验提示,以推荐你用 DataBinder.Eval 这种方式。如下图:这时候的提示信息为:Late bound resolution:runtime error could occur. 如下图:   这两种方式,其实执行是没有任何错误的,仅仅是一个提示信息而已。VS.net 2005 推荐你使用 DataBinder.Eval 这种方式。...[阅读全文]

posted @ | Feedback (3) | Filed Under [ .net 编程心得 ]

摘要:VS.net 的查询、替换功能也是支持正则表达式的,不过它的正则表达式跟标准的有点不同,比如::q, :b, :z {}等,这些具体的差异信息请看:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vxgrfRegularExpressionsS.asp 我们就来看一个具体的实例:比如我们有这样一段代码:               Assert.AreEqual(null, property._AcquiredDate);               Assert.AreEqual(null, property._AcreageNumber);               Assert.AreEqual("San Jose", property._City);               Assert.AreEqual(null, property._Country);               Assert.AreEqual("Santa Clara", property._County);               Assert.AreEqual(null, property._DETAILS);               Assert.AreEqual("1", property._FinancedNumberOfUnits); 我们想通过替换的方式,把它变成下面这样的代码:               property._AcquiredDate = null;               property._AcreageNumber = null;               property._City = "San Jose";               property._Country = null;               property._County = "Santa Clara";               property._DETAILS = null;               property._FinancedNumberOfUnits = "1"; 这个需求,在写单元测试的时候,会发现经常需要用到。要实现这个功能,我们就可以使用VS.net查询替换功能中的正则表达式。如下图所示:    在使用选项中选择“正则表达式”,然后查找内容为“Assert\.AreEqual\({[^,]+}, {[^\)]+}\);”;替换内容为:“\2 = \1;”;然后全部替换,OK,我们可以省下大量的时间干其他事情了。 如果你想反向替换,也就是把上面的结果替换为最上面的代码,这时候,查询的内容为:“{[^:b=]*}:b*=:b*{[^;]*};”,替换内容为:“Assert.AreEqual(\2, \1);”。 上面的范例,其实是本月北京 .net Group 活动的内容的一小部分。本月北京.net Group 活动主题是正则表达式。对.net 下正则表达式感兴趣的北京网友,建议参加这次.net Group 活动,本次活动时间 10 月 28 日下午18点半,更具体的信息请看以下连接:  http://www.mscommunity.com/UserGroup/Discussion/default.aspx ...[阅读全文]

posted @ | Feedback (8) | Filed Under [ .net 编程心得 ]

摘要:我很早之前的Blog,说过可能导致 could not access 'cdo.message' object 异常的几种情况。今天新有发现几种情况下,会报这个错误,特整理,导致这个异常的情况: 1、没有权限:具体看:http://blog.joycode.com/ghj/archive/2004/02/17/13197.aspx 2、System.Web.Mail FAQ  这里提供了另外6种情况,我就不转贴了,自己查http://www.systemwebmail.com/faq/4.2.3.aspx 3、你装了杀毒软件,或者防火墙,以McAfee VirusScan Enterprise 8.0 为例,在端口限制中,默认限制了除 amgrsrvc.exe,tomcat.exe,outlook.exe,msimn.exe,agent.exe,eudora.exe,nlnotes.exe,mozilla.exe,netscp.exe,opera.exe,pine.exe,poco.exe,thebat.exe,thunderbird.exe,ntaskldr.exe,inetinfo.exe,nsmtp.exe,nrouter.exe,tomcat5.exe,tomcat5w.exe,ebs.exe,FireSvc.exe,modulewrapper.exe,MSKSrvr.exe,MSKDetct.exe  这些程序外对 25 端口的请求。 而25端口是SMTP 用的。这时候就会报 未能访问“CDO.Message”对象 对象错误;只要把你的程序名放到例外名单中,即可绕过这个限制。如下图:  4、你的Mail服务器性能不太好,经常超时,或其他错误,也会报:未能访问“CDO.Message”对象 的错误。...[阅读全文]

posted @ | Feedback (35) | Filed Under [ .net 编程心得 网站开发管理相关内容 ]

摘要:今天做的一个Win程序,在 System.Windows.Forms.ListView  控件的双击事件中,做了一些其他操作,这时候,原来默认双击把 CheckBox 选中或者不选中就很不合适了。 由于 CheckBox 的选择不选择是  System.Windows.Forms.ListView 控件自身提供的,要修改这个设置,就需要重载这个控件。代码如下,注意,是重载 WndProc 方法而不是重载 OnDoubleClick 方法。 using System; using System.Windows.Forms; using System.Drawing;   namespace ListViewCheckBox {      public class MyListView:System.Windows.Forms.ListView      {          private const int WM_LBUTTONDBLCLK = 0x0203;            public MyListView():base()          {          }            protected override void WndProc(ref Message m)          {               if(m.Msg == WM_LBUTTONDBLCLK)               {                    Point p                = PointToClient(new Point(Cursor.Position.X, Cursor.Position.Y));                    ListViewItem lvi   = GetItemAt(p.X, p.Y);                    if(lvi != null)        lvi.Selected = true;                    OnDoubleClick(new EventArgs());               }               else                    base.WndProc (ref m);          }      } }   这个问题在 http://dotnetjunkies.com/WebLog/jonne%20kats/archive/2004/07/13/19163.aspx  有详细描述。Jonne Kats   的需求想法,跟我想到一起去了。...[阅读全文]

posted @ | Feedback (6) | Filed Under [ .net 编程心得 ]

摘要:今天在整理一个目录的时候,发现某一个目录下,资源管理器竟然变成了这样的样式,稀奇,少见,特在此备份,以留念:   注意那里的 未指定 这三个字。正常的可以看这里:http://blog.joycode.com/ghj/gallery/image/1707.aspx  并没有未指定这三个字。...[阅读全文]

posted @ | Feedback (11) | Filed Under [ 非技术随笔 ]

摘要:今天一天都在找一个Bug,我正在开发的一个项目中,ASP.net的页面,Post提交过去后,竟然接受不到数据。 第一反应就是去查客户端和服务器端发送的Http请求,用 ieHTTPHeaders 监控每次发送的请求,我倒,竟然没看到数据传递上去。 不会是我安装的一些IE第三方插件的问题吧,禁用所有第三方插件,再测试,仍然有这个问题。 实在没办法了,采用最笨的办法,页面中的元素一点点删除,看是不是仍然有这个问题,一直删除到很少,都有这个问题,在删除到很少的时候,发现一个现象,如果输入的信息是英文,没问题,传递上去了,如果是中文,无法传递上去,如果是中英文混杂,只有英文传递上去了。 中英文的问题,那会不会是编码的问题,修改 仍然有问题。 对了,WEB.config 中有个设置编码问题的地方,过去一看,我倒,我啥时候,把WEB.config 的globalization 节修改成下面的了。发送接受编码竟然不统一,怪不得接收不到参数。     阅读全文]

posted @ | Feedback (17) | Filed Under [ .net 编程心得 网站开发管理相关内容 ]

摘要:错误再现: 在 IE 中,访问 http://localhost\1.htm (注意这里故意是 \ 而不是 / , / 是没有问题的。http://localhost\1.htm 在 Mozilla Firefox 中认为是错误的,但是IE认为是正确的。)这样地页面没问题,但是,如果这个页面1.htm中的一个页面链接是连接到一个ASPX页面。假设 1.aspx 1.aspx 使用到这样一行代码       Request.UrlReferrer就会报错误 ,错误如下: 无效的 URI: 无法分析主机名。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.UriFormatException: 无效的 URI: 无法分析主机名。 [UriFormatException: 无效的 URI: 无法分析主机名。]   System.Uri.Parse() +2504   System.Uri..ctor(String uriString, Boolean dontEscape) +153   System.Uri..ctor(String uriString) +7   System.Web.HttpRequest.get_UrlReferrer() +156   ASP._1_aspx.Page_Load(Object src, EventArgs e) in D:\WEBSITE\Community\1.aspx:6   System.Web.UI.Control.OnLoad(EventArgs e) +55   System.Web.UI.Control.LoadRecursive() +27   System.Web.UI.Page.ProcessRequestMain() +750版本信息: Microsoft .NET Framework 版本:1.1.4322.2032; ASP.NET 版本:1.1.4322.2032 请求 1.aspx 页面的时候,发送的Http头信息的部分如下: GET /1.aspx HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*Referer: http://localhost\1.htmAccept-Language: zh-cnAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.40607) 显然微软的System.Uri.Parse() 中,认为URL中 / 才是正确的,而 \ 是错误的。 以上Bug,就是通过......[阅读全文]

posted @ | Feedback (8) | Filed Under [ .net 编程心得 网站开发管理相关内容 ]

摘要:我以前介绍过 ieHTTPHeaders,具体看:http://blog.joycode.com/ghj/archive/2004/04/16/19768.aspx ,当时是 1.51 版本,现在1.52 版本出来了。具体可以到下面地址下载: http://www.blunck.info/iehttpheaders.html ieHTTPHeaders  可以方便的看请求页面的时候,IE 都作了哪些具体的操作,对于调试WEB程序很有帮助。下面是官方站点的截图:  ...[阅读全文]

posted @ | Feedback (12) | Filed Under [ 网站开发管理相关内容 ]