访问DotNetNuke中asmx Web服务文件中的ModuleID和PortalID

本文关键字:ModuleID 文件 PortalID 服务 DotNetNuke asmx Web 访问 | 更新日期: 2023-09-27 18:22:33

我的DotNetNuke模块中有一个asmx Web服务文件。如何访问此asmx文件中的PortalID和ModuleID。当我尝试在代码behinde.ascx.cs文件中运行良好的代码时,它返回portalID=0,ModuleID=1

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

访问DotNetNuke中asmx Web服务文件中的ModuleID和PortalID

编辑以下内容仍然正确,但是DNN 6.2的发布包含了专门用于在DNN中构建web服务的服务框架。服务框架是一个比推出自己的基于.asmx的服务更好的解决方案。

/EDIT

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

var domainName = Globals.GetDomainName(request);
var alias = PortalAliasController.GetPortalAliasInfo(domainName);
return new PortalSettings(-1, alias);

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

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

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

模块设置要求您处于模块的上下文中。.asmx服务不会有那种级别的上下文。