解决Asp.Net Forums中出现的时区问题

  Asp.Net Forums(后面简称ANF)的游客和管理员默认的是伦敦时区。所以当我们按照说明安装时,永远无法同时让所有用户的时区都正确。除非你的站点安装在伦敦。其实这个问题也很好解决。

  安装完ANF后,在它的数据库中有一个名为“forumns_UserProfile”的表。这张表记录的是用户的基本信息。其中UserId为0的一条记录是游客的记录,UserId为2的记录是管理员的记录(默认安装完ANF后就会生成这两条记录)。在这张表里你会发现有一个名为“TimeZone”的字段。这个字段就是设置时区用的。如果你在安装好ANF后已经注册过用户,那么你可以看到新注册用户的TimeZone用户值都是8(中国地区),只有游客和管理员的两条记录是0。你只需把这两条系统安装时生成的记录的TimeZone字段,设置成服务所在地的时区,然后通过管理员,进入系统的后台,设置对应的正确时区就可以了。新注册的用户是按用户所在地时区自动生成的,不用去管它。

  还有一种方法,就是修改.sql文件,以便在ANF安装的时候就能正确设置时区。

  1、修改 install-Data.sql 文件如下,以为游客创建正确的时区:

……

INSERT INTO

forums_UserProfile

VALUES

(

0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0--所修改行(0 修为 8)

)

……

  2、修改 Install-Procedures.sql 文件如下,以为管理员创建正确的时区:

……

CREATE procedure forums_User_CreateUpdateDelete

(

@UserID int out,

@UserName nvarchar (64) = '',

@NickName nvarchar(64) = '',

@IPCreated nvarchar (32) = '000.000.000.000',

@Password nvarchar (64) = '',

@Email nvarchar (128) = '',

@StringNameValuePairs varbinary (7500) = 0,

@UserAccountStatus smallint = 1,

@PasswordFormat int = 1,

@PasswordQuestion nvarchar(256) = '',

@PasswordAnswer nvarchar(256) = '',

@Salt nvarchar (24) = '',

@AppUserToken varchar (128) = '',

@ForumView int = 0,

@TimeZone float = 8.0,--所修改行(0.0 修为 8.0)

……

  结束。