Доступ к ModuleID и PortalID в файле веб-сервиса asmx в DotNetNuke - PullRequest
2 голосов
/ 06 февраля 2012

У меня есть файл веб-сервиса asmx в моем модуле DotNetNuke. Как я могу получить доступ к PortalID и ModuleID в этом файле asmx. Когда я пытаюсь этот код, который отлично работает в коде .inx.csx.cs файла, он возвращает portalID = 0, ModuleID = 1

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

Ответы [ 2 ]

4 голосов
/ 06 февраля 2012

EDIT Приведенное ниже все еще верно, однако в выпуск DNN 6.2 была включена инфраструктура служб, специально предназначенная для создания веб-служб в DNN. Сервисная структура - намного лучшее решение, чем развертывание вашего собственного сервиса на основе .asmx.

/ EDIT

Поскольку вы выполняете вызов веб-службы, а не модуль 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)
3 голосов
/ 06 февраля 2012

Настройки модуля требуют, чтобы вы были в контексте модуля.Служба .asmx не будет иметь такого уровня контекста.

...