ASP.NET整合Discuz!NT3.5实例说明(含用户登录、评论等)
2015-12-03 18:33
609 查看
http://bbs.51aspx.com/showtopic-30029.html#230540
前一阵想做一个团购导航网站,看到某些团购导航站都有论坛,自己也想加一个,研究了下Discuz!NT,发现有API接口,就忽然想到了用Discuz!NT来整合网站,岂不是很方便,会员那部分就不需要自己开发了。
说干就干,下来API的例子和开发包研究了一下,看了一遍仍然是一头雾水,不知道是不是自己太笨。而且发现API还有错误,来官方论坛求助貌似没有得到回答,看来还是只能靠自己啊。看了N遍终于明白了大概,整个API都熟悉了一下使用方法,发现API虽然方便但是的问题多多,其中用户登录后跳转行为(不停的跳来跳去,效率太低,影响搜索引擎收录)还有“Code: 103, Message: 当前会话所提交的call_id没有大于前一次的call_id”错误,更是让我彻底对API无语郁闷,最后只好采用第二套方法下载源码自己整合+Discuz!NT API。
还好Discuz!NT是开源程序,否则我真放弃使用了,说下我的网站徐州86516团购导航http:/www.86516tuan.com,可以看到我主要整合了用户的登录状态和登录信息的获取(登录和注册都在论坛完成)、登录后退出、用户的评论、自动发帖以及系统后台的计划任务等,下面一一介绍一下在整合方法,需要Discuz!NT的DLL,我是把所有的DLL都放到自己网站的bin目录下,附上代码。
1、用户的登录状态和登录信息的获取
using Discuz.Forum;
using Discuz.Entity;
string discuzName = string.Empty;
if (Request.Cookies["dnt"] != null)
{
//已经登录
int uid = Convert.ToInt32(Request.Cookies["dnt"]["userid"]);
//获取登录用户信息
UserInfo info = Users.GetUserInfo(uid);
if (info != null)
{
discuzName = info.Username;
}
else
{
DiscuzSession ds = DiscuzSessionHelper.GetSession();
ds.Logout(string.Empty);
}
}
else
{
//未登录
}
复制代码
2、登录后退出,需要API的DiscuzToolKit开发包的dll,下载地址是:http://nt.discuz.net/showtopic-81187.html
using Discuz.Toolkit;
DiscuzSession ds = DiscuzSessionHelper.GetSession();
ds.Logout(string.Empty);
复制代码
3、自动发帖,我每采集一条团购数据就会给Discuz!NT论坛发一个帖子,同时两边利用ID对应上
比如:http://www.86516tuan.com/goods/787.html和http://www.86516tuan.com/bbs/showtopic-817.aspx
自动创建主题采用的也是API,方法如下,具体参数请参考官方API开发指南
DiscuzSession ds = DiscuzSessionHelper.GetSession();
TopicCreateResponse tcr = ds.CreateTopic(uid, title, fid ,message,tags,type_id);
复制代码
4、获取用户评论,采用官方API
DiscuzSession ds = DiscuzSessionHelper.GetSession();
TopicGetRencentRepliesResponse trr = ds.GetRecentReplies(fid, tid, page_size, page_index);
复制代码
5、发表新评论,这里是当初没有彻底采用API的主要原因,API需要不停跳转验证用户。经过研究源码,自己写出来评论功能,主要调用官方的存储过程“dnt_createpost1‘,由于参数过多,这里就不写代码了,主要就是给参数赋值,用户数据可以根据上面获取用户信息的方法来获得,另外还可以在官方下载数据字典,来确定参数功能。
前一阵想做一个团购导航网站,看到某些团购导航站都有论坛,自己也想加一个,研究了下Discuz!NT,发现有API接口,就忽然想到了用Discuz!NT来整合网站,岂不是很方便,会员那部分就不需要自己开发了。
说干就干,下来API的例子和开发包研究了一下,看了一遍仍然是一头雾水,不知道是不是自己太笨。而且发现API还有错误,来官方论坛求助貌似没有得到回答,看来还是只能靠自己啊。看了N遍终于明白了大概,整个API都熟悉了一下使用方法,发现API虽然方便但是的问题多多,其中用户登录后跳转行为(不停的跳来跳去,效率太低,影响搜索引擎收录)还有“Code: 103, Message: 当前会话所提交的call_id没有大于前一次的call_id”错误,更是让我彻底对API无语郁闷,最后只好采用第二套方法下载源码自己整合+Discuz!NT API。
还好Discuz!NT是开源程序,否则我真放弃使用了,说下我的网站徐州86516团购导航http:/www.86516tuan.com,可以看到我主要整合了用户的登录状态和登录信息的获取(登录和注册都在论坛完成)、登录后退出、用户的评论、自动发帖以及系统后台的计划任务等,下面一一介绍一下在整合方法,需要Discuz!NT的DLL,我是把所有的DLL都放到自己网站的bin目录下,附上代码。
1、用户的登录状态和登录信息的获取
using Discuz.Forum;
using Discuz.Entity;
string discuzName = string.Empty;
if (Request.Cookies["dnt"] != null)
{
//已经登录
int uid = Convert.ToInt32(Request.Cookies["dnt"]["userid"]);
//获取登录用户信息
UserInfo info = Users.GetUserInfo(uid);
if (info != null)
{
discuzName = info.Username;
}
else
{
DiscuzSession ds = DiscuzSessionHelper.GetSession();
ds.Logout(string.Empty);
}
}
else
{
//未登录
}
复制代码
2、登录后退出,需要API的DiscuzToolKit开发包的dll,下载地址是:http://nt.discuz.net/showtopic-81187.html
using Discuz.Toolkit;
DiscuzSession ds = DiscuzSessionHelper.GetSession();
ds.Logout(string.Empty);
复制代码
3、自动发帖,我每采集一条团购数据就会给Discuz!NT论坛发一个帖子,同时两边利用ID对应上
比如:http://www.86516tuan.com/goods/787.html和http://www.86516tuan.com/bbs/showtopic-817.aspx
自动创建主题采用的也是API,方法如下,具体参数请参考官方API开发指南
DiscuzSession ds = DiscuzSessionHelper.GetSession();
TopicCreateResponse tcr = ds.CreateTopic(uid, title, fid ,message,tags,type_id);
复制代码
4、获取用户评论,采用官方API
DiscuzSession ds = DiscuzSessionHelper.GetSession();
TopicGetRencentRepliesResponse trr = ds.GetRecentReplies(fid, tid, page_size, page_index);
复制代码
5、发表新评论,这里是当初没有彻底采用API的主要原因,API需要不停跳转验证用户。经过研究源码,自己写出来评论功能,主要调用官方的存储过程“dnt_createpost1‘,由于参数过多,这里就不写代码了,主要就是给参数赋值,用户数据可以根据上面获取用户信息的方法来获得,另外还可以在官方下载数据字典,来确定参数功能。
相关文章推荐
- 将 ASP.NET MVC3 Razor 项目部署到虚拟主机中
- asp.net MVC 单选按钮的使用
- jqurey创建查询删除cookie
- asp.net用户控件接收外部页面的public参数
- Asp.net TextBox值改变了 但后台获取的值未变
- 自定义百度文本编辑器的按钮
- ASP.NET页面之间传递值的几种方式
- Asp.Net 获取FileUpload控件的文件路径、文件名、扩展名
- 使用Areas分离ASP.NET MVC项目
- ASP.NET4中不要相信Request.Browser.Cookies,Form验证要用UseCookies
- metasploit 连接postgresql可能遇见的问题
- ASP.net知识点
- 【转】asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
- Asp.Net文件上传之简单文件上传
- asp.net基于Web Service实现远程上传图片的方法
- asp.net简单实现单点登录(SSO)的方法
- 看stackoverflow大牛如何回答何时在ASP.NET中使用异步控制器?
- asp.net获取客户端浏览器及主机信息
- asp.net实现获取客户端详细信息
- asp.net实现获取客户端详细信息