这是出错误的页面
源错误: 
行 22:  {
行 23:  // 在此处放置用户代码以初始化页面
行 24:  canAdministerCategories = (Context.User.Identity.IsAuthenticated &&
行 25:  ((CcPrincipal)Context.User).HasPermission((int)HouTaiPermissions.HouTaiPermissions));
行 26:  if(!canAdministerCategories)
 
我看了下好象是((CcPrincipal)Context.User)出现错误,CcPrincipal是一个类,其定义如下:public class CcPrincipal: Cc.WebModules.Business.BizObject, System.Security.Principal.IPrincipal
但是同样的语句我是从另一个模块改过来的,那个模块又是对的,我百思不得其解哦,我该怎么办呢,现在程序急着用,急啊,帮帮小弟

解决方案 »

  1.   

    Context.User不是null哦, 我看过了,再帮忙想想办法啊
      

  2.   

    大家来帮我分析分析原因啊,我调试中就是((CcPrincipal)Context.User).HasPermission((int)HouTaiPermissions.HouTaiPermissions))这句出错的,因为到了这个地方就错了
      

  3.   

    另外 HasPermission的参数是什么类型?
    HouTaiPermissions.HouTaiPermissions是个枚举么?
      

  4.   

    HasPermission的参数是int类型,返回的类型是bool,HouTaiPermissions.HouTaiPermissions是个枚举类型的,后面应该都没错的,我调试的结果都在那个(CcPrincipal)Context.User中出错,应该是Context.User转换成类CcPrincipal不成功,可是我在另一个页面中却是成功的
      

  5.   

    是啊,namespace Cc.WebModules.Forums.Web
    {
       public class Forum : Cc.TheCc.Web.CcPage
    {
    private bool canModerateForums;
                      protected void Page_Load(object sender, EventArgs e)
    {
    // check if the user has the permission to moderate the  forums
    canModerateForums = (Context.User.Identity.IsAuthenticated &&
    ((CcPrincipal)Context.User).HasPermission((int)ForumsPermissions.ModerateForums));
    在这里是没有错误的,
    但在
    namespace Cc.WebModules.Admin.Web
    {
    /// <summary>
    /// _Default 的摘要说明。
    /// </summary>
    public class _Default :Cc.TheCc.Web.CcPage
    {
    private bool canAdministerCategories;
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    canAdministerCategories = (Context.User.Identity.IsAuthenticated &&
    ((CcPrincipal)Context.User).HasPermission((int)HouTaiPermissions.Permissions));
    里却错误了哦,而且CcPrincipal是同一个类啊
      

  6.   

    1 去问问 CcPrincipal 是否 实现了 IPrincipal 接口
      如果实现了那构造函数中对于IIdentity.Identity属性的字段是如何初始化的?
      另外你们大概会有一个实现了IIdentity接口的类 该类为为IIdentity.Identity属性
      获取时返回的对象,看看该类的实现2 我觉得你需要在OnInit内先将一个ccPrincipal对象赋予HttpContext.Current.User 
      在pageload内再转换回来这是我在basepage的OnInit的部分代码if ( Context.User.Identity.IsAuthenticated )
    {
    if ( !( HttpContext.Current.User is SitePrincipal ) )
    {
    string uname = HttpContext.Current.User.Identity.Name.Split( ';' )[ 2 ] ;
    SitePrincipal newUser = new SitePrincipal( uname ) ;
    HttpContext.Current.User = newUser ; }
    }
      

  7.   

    问题也有可能出现在
    ((int)HouTaiPermissions.Permissions));的转换部分
      

  8.   

    问题也有可能出现在
    ((int)HouTaiPermissions.Permissions));的转换部分
    ----------------------这个是没错的,因为我已经((int)HouTaiPermissions.Permissions))整个用1替代,还是出现一样的错误!所以我觉得错误应该还是在((CcPrincipal)Context.User)上
      

  9.   

    谢谢,xiahouwen(武眉博<活靶子.NET>) 对我的帮助,其实那个块不是我写的,我和另一个朋友一起合作的,我正好用到了他写的块,只是他最近很忙,所以我本想自己解决。你说的方法要涉及到他写的很多类,这方面我不是很熟,呵呵,只能让他回来帮我解决了。