我正在为DNN 6/7创建自定义HttpModule,以便在我们的网站上进行一些用户跟踪。我已经设置了HttpModule来记录推荐网址和当前网页网址。我也希望HttpModule网站平台具有特定性,因此它适用于DNN网站和非DNN网站。
t.Referrer = request.UrlReferrer != null ? request.UrlReferrer.ToString() : "(direct / unknown)";
t.Page = request.Url.ToString();
引用网址按照我的意图显示(http:// site / folder / page.aspx),但当前页面显示为DNN标签(http:// site / folder / default.aspx?TabID = 123 )。
我的自定义模块中是否有办法访问" DotNetNuke.Entities.Tabs.TabController.CurrentPage.FullUrl" ?
此外,我想如何优雅地访问FullUrl(如果HttpModule与DNN站点和/或页面一起使用),并且只是正常访问URL(当/如果是HttpModule)不与DNN一起使用)?
我认为很明显这只是一个If / Null / Else,但在这种情况下是否有一种更优雅的方式来处理它?</ p>
C#示例最好,但我也理解VB语法。
谢谢!
答案 0 :(得分:2)
加载模块后,URL会变为友好。你应该可以做这样的事情来获取DNN页面网址。
string currentURL = Globals.NavigateURL(PortalSettings.ActiveTab.TabID);
答案 1 :(得分:0)
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;
}