因为网站要加个论坛,所以就用到了Discuz!NT3.6。下面是我的一个解决办法。
1.将论坛放在网站的forum文件夹下
2.把Dnt.config移动到根目录下,其中的<Forumpath>/</Forumpath>改为<Forumpath>~/forum/</Forumpath>
3.将下面添加进根目录的web.config<httpModules> <add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" /> </httpModules><system.webServer> <modules> <!-- 注意:此节设置由Discuz!NT接管http请求。不会干涉对非Discuz!NT论坛路径下的请求。--> <add type="Discuz.Forum.HttpModule, Discuz.Forum" name="HttpModule" /> </modules></system.webServer>
4.代码
using System;using System.Collections.Generic;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Discuz.Common;using Discuz.Data;using Discuz.Config;using Discuz.Entity;using Discuz.Common.Generic;using Discuz.Forum;namespace Discuz.Toolkit.WebSample{ public partial class login : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string str = ""; if (Request.Cookies["dnt"] != null) { HttpCookie dnt = Request.Cookies["dnt"]; str = "domain:" + dnt.Domain; str += "过期时间" + dnt.Expires.ToString(); str += "是否有子键" + dnt.HasKeys.ToString(); str += "是否可以通过客户端脚本访问" + dnt.HttpOnly.ToString(); str += "名称:" + dnt.Name; str += "虚拟路径" + dnt.Path; str += "是否使用安全套接字层" + dnt.Secure.ToString(); str += "cookie值" + dnt.Value; for (int i = 0; i < dnt.Values.Count; i++) { str += "---------------"+dnt.Values[i]; } } Response.Write(str); } private void userlogin() { int uid = 1; //这里的uid是我自己测试用的,uid可以从cookie中取得,也可以从数据库中取得 Discuz.Config.GeneralConfigInfo config = Discuz.Config.GeneralConfigs.GetConfig(); OnlineUserInfo onlineUserinfo = Discuz.Forum.OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout); Discuz.Forum.UserCredits.UpdateUserCredits(uid); ForumUtils.WriteUserCookie(uid, Utils.StrToInt(DNTRequest.GetString("expires"), -1), config.Passwordkey, DNTRequest.GetInt("templateid", 0), DNTRequest.GetInt("loginmode", -1)); Discuz.Forum.OnlineUsers.UpdateAction(onlineUserinfo.Olid, UserAction.Login.ActionID, 0, config.Onlinetimeout); Discuz.Data.Users.UpdateUserLastvisit(uid, DNTRequest.GetIP()); } private void loginout() { try { Discuz.Config.GeneralConfigInfo config = Discuz.Config.GeneralConfigs.GetConfig(); OnlineUserInfo onlineUserinfo = Discuz.Forum.OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout); int userid = Utils.StrToInt(ForumUtils.GetCookie("userid"), -1); Discuz.Forum .OnlineUsers.UpdateOnlineTime(-999999, userid); Discuz.Data.OnlineUsers.DeleteRows(onlineUserinfo.Olid); ForumUtils.ClearUserCookie(); Utils.WriteCookie("dnttemplateid", "", -999999); } catch { } } protected void Button1_Click(object sender, EventArgs e) { userlogin(); } protected void Button2_Click(object sender, EventArgs e) { loginout(); } }}
可以用上面代码进行测试,执行登陆后,再转到论坛,就发现论坛已经登陆了,执行退出登陆,论坛也将会退出登陆。
另外在发布到IIS后,记得设置下用户访问权限,不然会有错误。
当你能爱的时候就不要放弃爱