我的DotNetNuke模块中有一个asmx webservice文件。如何在此asmx文件中访问PortalID和ModuleID。当我尝试在代码behinde .ascx.cs文件中正常工作的代码时,它返回portalID = 0,ModuleID = 1
private Components.Setting _ModuleSettings;
_ModuleSettings = new Components.Setting(PortalId, ModuleId);
答案 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服务不会具有该级别的上下文。