访问DotNetNuke中asmx webservice文件中的ModuleID和PortalID

时间:2012-02-06 10:24:09

标签: c# asp.net ajax asmx dotnetnuke

我的DotNetNuke模块中有一个asmx webservice文件。如何在此asmx文件中访问PortalID和ModuleID。当我尝试在代码behinde .ascx.cs文件中正常工作的代码时,它返回portalID = 0,ModuleID = 1

 private Components.Setting _ModuleSettings;
 _ModuleSettings = new Components.Setting(PortalId, ModuleId);

2 个答案:

答案 0 :(得分:4)

修改 以下情况仍属实,但DNN 6.2的发布包括服务框架,该框架专门用于在DNN中构建Web服务。服务框架是一个比滚动自己的基于.asmx的服务更好的解决方案。

<强> /修改

由于您正在执行Web服务调用而不是DNN模块,因此未提供上下文。但是您可以自己重新创建它。获取当前门户网站设置

var domainName = Globals.GetDomainName(request);
var alias = PortalAliasController.GetPortalAliasInfo(domainName);

return new PortalSettings(-1, alias);

由于您并非真正处于页面上下文中,因此ActiveTab将回退到默认值(除非您可以使用活动tabId替换-1)。

要获取模块上下文,您需要将moduleId和tabId传递给您的服务,然后调用:

var module = new ModuleController().GetModule(moduleId, tabId)

答案 1 :(得分:3)

模块设置要求您位于模块的上下文中。 .asmx服务不会具有该级别的上下文。