我正在为DNN6/7创建一个定制的HttpModule,以便在我们的站点上进行一些用户跟踪。我已经设置了HttpModule来记录Referral和当前页面Url。我也希望有特定的HttpModule网站平台,所以它与DNN站点和非DNN站点一起工作。
t.Referrer = request.UrlReferrer != null ? request.UrlReferrer.ToString() : "(direct / unknown)";
t.Page = request.Url.ToString();推荐URL如我所愿呈现(http:// site /文件夹/ page.aspx),但当前页面显示为DNN选项卡(http:// site /文件夹/ default.aspx?TabID=123)。
我的自定义模块中有访问"DotNetNuke.Entities.Tabs.TabController.CurrentPage.FullUrl“的方法吗?
此外,我还猜想,如果FullUrl可用(当/如果HttpModule与DNN站点和/或页面一起使用),并且通常只访问HttpModule (当/如果HttpModule不与DNN一起使用),那么如何优雅地访问HttpModule?
我认为这显然只是一个If/Null/Else,但是在这种情况下是否有更优雅的方法来处理这个问题呢?
C#示例最好,但我也理解VB语法。
谢谢!
发布于 2014-08-21 16:38:07
加载模块后,URL将更改为友好的。但是,您应该能够这样做,以获得DNN页面URL。
string currentURL = Globals.NavigateURL(PortalSettings.ActiveTab.TabID);
发布于 2014-08-22 17:44:29
根据奥斯汀·温利的建议,我最终做到了以下几点:
protected string GetPageUrl(string TabIdUrl)
{
if (TabIdUrl.Contains("TabID"))
{
try
{
Uri uri = new Uri(TabIdUrl);
string param = HttpUtility.ParseQueryString(uri.Query).Get("TabID");
int tabid = Convert.ToInt32(param);
return Globals.NavigateURL(tabid);
}
catch(Exception ex)
{
return TabIdUrl + "| ERROR: " + ex.ToString().Take(200);
}
}
else
return TabIdUrl;
}https://stackoverflow.com/questions/25409884
复制相似问题