stella forum 知识库---一些错误的修补

公司的网络又出问题了,可是奇怪的是博客园竟然可以访问,呵呵,于是过来把最近对sf2.0 的一些错误写在这里,同时附上解决办法


1.forms验证的文件配置问题

在web.config中指定了受保护的文件路径,但是有一些路径很明显的不正确,形如下面这样的
<location path="pages/newtopic.aspx">
    <system.web>
      <authorization>
        <deny users="?">
        </deny>
      </authorization>
    </system.web>
  </location>
多了个pages/,把这些东西都去掉就可以,其实,这就是大家都熟悉的“复制/粘贴”错误,这段配置是从1.1版里复制过来的 ...

2.获取当前用户时的错误
这是个严重影响性能的错误,大家注意看下面这段代码,  HttpContext.Current.Session["user"]=user;这句在网上发布的版本里是没有的,结果就造成每次访问登陆用户的信息时都要查一次数据库,真是很白痴且严重的错误...
if(HttpContext.Current.Session["user"]==null)
     {
      user=( new Business.User() ).GetProfle(0,this.HttpContext.User.Identity.Name,null);
      //超级严重的错误!
      HttpContext.Current.Session["user"]=user;
     }
     else
     {
      user=(Model.User)HttpContext.Current.Session["user"];
     }
     return user;

代码的具体位置是Stella2.WebComponents.StellaContext的226行

3.皮肤文件位置的获取

public  string SkinPath
  {
   get
   {
   
    //错误2 !
    //if(User==null)
    if(!this.HttpContext.Request.IsAuthenticated)
     return System.Web.HttpContext.Current.Request.ApplicationPath+"/bbs/theme/XiCaoJie/skins/" ;
    else
     return System.Web.HttpContext.Current.Request.ApplicationPath+"/bbs/theme/"+User.Skin+"/skins/" ;
   }
  }

改变了一下获取方式,如请求通过了验证,那就一定可取到User.Skin的值。

代码的具体位置是Stella2.WebComponents.StellaContext的162行

4.StellaContext的初始化的问题

注释掉构造函数里的那些url参数的初始化,因为这些东西可以在需要的时候在取值,没必要在一开始就全部初始化一遍。
这是改动后的构造函数
public StellaContext()
  {
       context= HttpContext.Current;
  }

posted on 2005-07-30 15:59  Notus|南色的风  阅读(661)  评论(0编辑  收藏  举报