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;
}