|  | 网站首页 | .Net研究 | 
您现在的位置: 程序员之路 >> .Net研究 >> 领域技术 >> SharePoint >> 文章正文
赞助商链接
频 道 导 航
.Net研究频道栏目导航
相 关 文 章
sps2003中普通用户设置凭证信息遇到的错误           
sps2003中普通用户设置凭证信息遇到的错误
作者:wealink 文章来源:不详 更新时间:2007-5-10 11:55:55


想让普通用户可以设置sso凭证信息,在后台模拟了管理员来操作,也模拟成功了,Credentials.SetUserCredentials为什么还是报错?网上找了很多解决办法可都不行,没设辙了,望各位老大帮忙看看。。。。。。不胜感激!
---------------------------------------
环境:
1.win2k AD/win2k3 sharepoint2003/win2k database;
2.使用smartpart包装web usercontrol方式开发webpart.
3.实现功能是让用户修改密码的同时更新SSO凭证信息,顺序是先修改该用户的密码,然后设置凭证信息。
4. 已经在web空间中加入了FormDigest 和 SSOFormDigest控件。
5.web.config 中加入了
<SafeControl Assembly="Microsoft.SharePoint.Portal.SingleSignon.Security.SingleSignonPermission, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" Namespace="Microsoft.SharePoint.Portal.SingleSignon.Security" TypeName="*" />
6.在onInite() 中加入了 SSOCanaryChecker.AddCanary(this.Page)
--------------------------------------------------------------------------------------
错误1(未模拟):
Exception Code: 0x80630005Source: Microsoft.SharePoint.Portal.SingleSignonStackTrace: at Microsoft.SharePoint.Portal.SingleSignon.Credentials.SetUserCredentials(String strApplicationName, String strUserAccount, Object[] Args) at Inspur.EIP.Portal.WEB._layouts.PortalAD.ChangePassword.btnModify_Click(Object sender, EventArgs e) in d:\EIPSolution\WEB\_layouts\PortalAD\ChangePassword.ascx.cs:line 94MethodName: SetUserCredentialsMessage: 应用程序中的错误。
错误2(模拟):
模拟用户:CCDC\eipadmin
当前用户:CCDC\testuser
NewSite之后的当前拥护:CCDC\eipadmin
设置凭证到SSO出错
Exception Code: 0x8062ffffSource: Microsoft.SharePoint.Portal.SingleSignonStackTrace: at Microsoft.SharePoint.Portal.SingleSignon.SSOCanaryChecker.b() at Microsoft.SharePoint.Portal.SingleSignon.SSOCanaryChecker.b() at Microsoft.SharePoint.Portal.SingleSignon.Credentials.SetUserCredentials(String strApplicationName, String strUserAccount, Object[] Args) at Inspur.EIP.Portal.WEB._layouts.PortalAD.ChangePassword.btnModify_Click(Object sender, EventArgs e)MethodName: bMessage: 应用程序中的错误。

代码:
try
{
string[] rgSetCredentialData = new string[3];

rgSetCredentialData[0] = username;
rgSetCredentialData[1] = pwd1;
rgSetCredentialData[2] = "domain";

// Change the context
WindowsIdentity objIdentity = CreateIdentity("eipadmin", "domain", "******");
WindowsImpersonationContext objContext = null;
objContext = objIdentity.Impersonate();
// Perform actions that require higher permission level

System.Web.HttpContext.Current.Response.Write( "<br>模拟用户:" +
System.Security.Principal.WindowsIdentity.GetCurrent().Name );

SPWeb web = SPControl.GetContextWeb( System.Web.HttpContext.Current );
System.Web.HttpContext.Current.Response.Write("<br>当前用户:" + web.CurrentUser );

SPSite site = new SPSite( "http://eip/C19/密码修改/default.aspx" );
SPWeb web1 = site.OpenWeb();
System.Web.HttpContext.Current.Response.Write("<br>NewSite之后的当前拥护:" + web1.CurrentUser );

Credentials.SetUserCredentials(
"webapp",
"domain\\" + username,
rgSetCredentialData);

objContext.Undo();



}
catch (SingleSignonException esso)
{
System.Web.HttpContext.Current.Response.Write("<br>设置凭证到SSO出错<br>" );
System.Web.HttpContext.Current.Response.Write("Exception Code: " + "0x" + esso.LastErrorCode.ToString("x"));
System.Web.HttpContext.Current.Response.Write("Source: " + esso.Source);
System.Web.HttpContext.Current.Response.Write("StackTrace: " + esso.StackTrace);
System.Web.HttpContext.Current.Response.Write("MethodName: " + esso.TargetSite.Name);
System.Web.HttpContext.Current.Response.Write("Message: " + esso.Message);
}
catch( Exception ex )
{
System.Web.HttpContext.Current.Response.Write(
"<br>设置凭证到SSO出错<br>" + ex.Message +
"<br>" + ex.Source +
"<br>" + ex.StackTrace +
"<br>" + ex.TargetSite );
}

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • .Net研究栏目导航
    网站频道导航