问题描述
网站做好,IIS也已经配置好了,SSL都配置好了,可以通过https访问网站,但是我在登录的时候有问题,我的机器装了3个证书,不管选哪个,都能登录,这不符合我的要求,我把其中一个证书的缩微图与用户绑定,只有这个证书才能登录,下边的这段代码是别人在网站已经能使用的,通过WCF通信,但是在我这里报"未将对象引用设置到对象实例,求大家帮帮我,礼拜一要用,实在没办法了。。。。。。publicstringSys_Public_CertificateInfo(){stringfunctionReturnValue=null;stringstr="";System.Security.Cryptography.SHA256Managedtmp=newSystem.Security.Cryptography.SHA256Managed();str=ServiceSecurityContext.Current.PrimaryIdentity.Name;//这句报错,未将对象引用设置到对象实例//str=ServiceSecurityContext.Current.AuthorizationPolicies.Count.ToString();str=str.Substring(str.Length-40,40).ToUpper();functionReturnValue=BitConverter.ToString(tmp.ComputeHash(System.Text.UnicodeEncoding.Unicode.GetBytes(str)));if(functionReturnValue!=null){functionReturnValue=functionReturnValue.Replace("-","");}else{functionReturnValue="";}tmp.Clear();tmp=null;returnfunctionReturnValue;}
解决方案
解决方案二:
在客户端判断,调试的时候能读到证书信息,发布到IIS后读不到证书信息,郁闷啊X509Storestore=newX509Store(StoreName.My,StoreLocation.CurrentUser);store.Open(OpenFlags.ReadOnly);//轮询存储区中的所有证书stringstr="";stringsub="";stringafter="";boolflag=true;foreach(X509Certificate2myX509Certificate2instore.Certificates){//将证书的名称跟要导出的证书MyTestCert比较,找到要导出的证书str=myX509Certificate2.Thumbprint;sub=myX509Certificate2.Subject.Split(',')[0].ToString().Split('=')[1].ToString();after=myX509Certificate2.NotAfter.ToString();if(sub==ds3.Tables[0].Rows[0]["certificatinfo_name"].ToString()){if(Common.common.md5(str.ToUpper(),32)!=ds3.Tables[0].Rows[0]["certificateinfo"].ToString()){flag=false;break;}}}store.Close();