随笔分类 -  经验总结

摘要:部署环境: Web应用程序部署在IIS7上。 错误现象: 原因分析: Web应用程序需要对接收到的Security Token的数字签名进行序列化时, 由于运行Web程序的用户没有访问私钥的读权限导致。 解决方案: 1, 用FindPrivateKey.exe工具找出私钥文件名称及路径; 假设已知公钥的thumbprint为“5988a04be6588fe61fae5cfba8d0b28aa27f83ef”,保存位置为Local Machine的My 文件夹;可使用如下命令: 注:FindPrivateKey的使用方法及下载路径为: http://msdn... 阅读全文
posted @ 2012-08-02 10:35 Rickey Hu 阅读(1818) 评论(1) 推荐(1)
摘要:错误现象错误原因a) 在SecurityTokenService.GetScope()方法中,设置了Scope.EncryptingCredentials属性为某个X509证书(公钥);b) Relying Party应用程序中没有设置对应的证书(包含私钥)。原因分析从出错页面的规模信息可知, ID4036是由ID1044错误引发的。导致ID1044异常的代码为Microsoft.IdentityModel.Web.TokenReceiver.ReadToken(String tokenXml, XmlDictionaryReaderQuotas readerQuotas)。通过.Net Re 阅读全文
posted @ 2012-07-26 11:58 Rickey Hu 阅读(1431) 评论(1) 推荐(1)
摘要:前言最近做一个有关用户认证及授权的项目,可以使用不同的的认证方式(传统的用户名/密码、域用户、Facebook用户和Windows Live用户),单点登录到应用程序中。用到的技术是微软的Claims 3.5,兼及WCF,证书,Asp.net, Windows Forms, 活动目录,AD FS2.0, OAuth 2.0等。目前架构设计及原型论证的工作已经结束, 准备对其中碰到的一些问题和解决方案写出来。一方面作为备份笔记、另一方面也希望对从事这方面开发的园友碰到类似问题时时有些帮助。读者对象理解Claims基本概念,并从事基于Claims认证和授权应用程序开发的人员。 ID3206错误 错 阅读全文
posted @ 2012-07-25 11:03 Rickey Hu 阅读(994) 评论(1) 推荐(1)
摘要:当发布在本地(localhost)开发的基于Claims的认证服务器和WCF服务,需要注意以下几点:1)将终结点(Endpoint)中的地址localhost全部改成服务器的机器名;2)将web.config/app.config中的HttpBinding中useDefaultWebProxy="false";(代码中做同样的处理);否则会出现如下错误:3)在客户端机器中安装证书到本地计算机的Trusted Root Certification Authorities 中;否则会出现如下错误: 阅读全文
posted @ 2012-06-28 09:44 Rickey Hu 阅读(458) 评论(0) 推荐(0)
摘要:前言 微软Windows 8操作系统的一大亮点是面向平板电脑的应用: Metro应用程序;它使得新版操作系统同时兼容平板和传统桌面电脑。Metro应用程序的开发必须在Windows 8 Consumer Preview及以上; 它支持编程语言有:C#/VB.net, C++和Javascript。感兴趣的同学,可以在VMWare 8及以上安装一个Windows 8 CP 的虚拟机,并安装Visual Studio 11 Beta Professional/Ultimate,就可以开始你的Metro之旅了。如何创建Metro应用程序此文中的应用程序为MSDN的示例程序:WindowsBlogRe 阅读全文
posted @ 2012-04-27 17:49 Rickey Hu 阅读(5989) 评论(4) 推荐(4)
摘要:两者都可以输出一个Partial视图;其区别如下:1. Partial有返回值(MvcHtmlString);RenderPartial没有返回值(Void)。 定义 1//PartialExtensions.Partial方法(HtmlHelper,String)2publicstaticMvcHtmlStringPartial(3thisHtmlHelperhtmlHelper,4stringpartialViewName5)67//RenderPartialExtensions.RenderPartial方法(HtmlHelper,String)8publicstaticvoidRend 阅读全文
posted @ 2012-03-20 15:23 Rickey Hu 阅读(8015) 评论(0) 推荐(2)
摘要:在asp.net中,默认情况下,验证控件(RequiredFieldValidator,CustomValidator,etc)是不能验自定义的用户控件(UserControl的.那么,如何用户控件被验证控件所使用呢? 方法有二:1) 创建自定义的Validator; (参考:http://www.dotnetcurry.com/ShowArticle.aspx?ID=197)  此方法太过复杂,... 阅读全文
posted @ 2010-10-18 17:43 Rickey Hu 阅读(800) 评论(1) 推荐(1)
摘要:在Asp.net中,有时候需要禁用掉一个a链接元素.在服务器端,比较容易;只需要设置LinkButton的Enabled属性即可.那么在客户端,如何使用javascript来实现呢? 如果你想当然的认为,使用a.disabled=true就能实现,那就错了.正确的方法是:同时设置disabled属性和href属性:1)禁用a元素; [代码]2)启用a元素; [代码]注意:LinkButton在的... 阅读全文
posted @ 2010-05-24 17:52 Rickey Hu 阅读(23965) 评论(5) 推荐(2)
摘要:众所周知,.NET程序所参照的DLL按照所有的文件路径划分,可分为两类:全局DLL(注册在GAC中)私有DLL(Win程序和exe文件在同一文件夹下,Web程序在顶层web.config同级的Bin文件夹下) 对于私有的DLL,当其数目众多时,由于没有分类,会显得比较凌乱;如果将其分类,分别放到对应的子目录,则会清爽许多. 问题是,如何解决应用程序对DLL的查找路径问题呢?答案是在配置文件中添加如... 阅读全文
posted @ 2010-04-29 16:48 Rickey Hu 阅读(3538) 评论(1) 推荐(2)
摘要:之前,我负责一个VB6编写的办公自动化系统,要求能在运行时,支持在不同语言间切换(英文,中文,日文,德文,法文和西班牙文);实质就是实现一个VB6的MUI程序. 这个需要的困难在于VB6显示文本的标准控件(Label,Textbox等)不支持Unicode;但字符串在其内部是按Unicode保存的,也就是说VB6本身是支持Unicode的. VB6中,标准控件显示字符串的过程如下: 1) 标准控件... 阅读全文
posted @ 2010-03-08 12:38 Rickey Hu 阅读(3248) 评论(0) 推荐(1)
摘要:在打印图片时,经常会碰到一种情况: 图片的大小会超过纸张的大小; 此时,我们需要对图片进行缩放,来适应纸张的大小. 那么如何来实现呢?方法有二,1) 根据打印机和打印纸张的设置, 直接转换图片的分辨率(Resolution). [代码]注意:使用此方法的一个弊端是会降低图片分辨率,从而导致打印出来的图片有闪烁(dithering).因此它不适用有打印分辨率高的场合;例如在打印条形码(barcode... 阅读全文
posted @ 2010-01-13 16:40 Rickey Hu 阅读(11263) 评论(0) 推荐(0)
摘要:Windows Service运行的账号类型有两种:1) 本地系统帐号(Local System Account); 使用此帐号,Windows Service即使用当前登录的系统帐号来运行服务。使用此类型帐号,可通过打开Allow service to interact with desktop选项来允许服务与桌面交互;譬如从服务向一个窗口发送消息。2) 其它帐号; 使用此类型帐号运行服务与1... 阅读全文
posted @ 2009-11-02 12:09 Rickey Hu 阅读(1734) 评论(0) 推荐(0)
摘要:在.net中,使用了配置文件(Windows程序:app.config; Web程序:web.config)来定义数据库的连接字符串。那么我们该如何来读取、解析并变更它呢?1) 读取config文件中的字符串; a) 首先必须在工程中添加对System.Configuration.dll 的引用; b)System.Configuration.ConfigurationManager.Conn... 阅读全文
posted @ 2009-11-02 11:29 Rickey Hu 阅读(1041) 评论(0) 推荐(0)
摘要:在项目开发过程中,有时会碰到要将XLS文件中的数据导入到数据库的需求。因为ADO.NET中的OleDB功能提供了连接和操纵XLS文件的功能,所以可用它来读取XLS中文件的内容并实现类似数据库的查询语句操作。其关键是使用XLS文件的NAMED RANGE功能,它类似于数据库中表的概念。那么,如何创建一个Named Range呢?1)将SpreadSheet的第一行作为列名;2)使用XLS菜单中的 I... 阅读全文
posted @ 2009-11-02 10:58 Rickey Hu 阅读(853) 评论(0) 推荐(0)