首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FullUrl in HttpModule

FullUrl in HttpModule
EN

Stack Overflow用户
提问于 2014-08-20 16:27:52
回答 2查看 171关注 0票数 0

我正在为DNN6/7创建一个定制的HttpModule,以便在我们的站点上进行一些用户跟踪。我已经设置了HttpModule来记录Referral和当前页面Url。我也希望有特定的HttpModule网站平台,所以它与DNN站点和非DNN站点一起工作。

代码语言:javascript
复制
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语法。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-21 16:38:07

加载模块后,URL将更改为友好的。但是,您应该能够这样做,以获得DNN页面URL。

string currentURL = Globals.NavigateURL(PortalSettings.ActiveTab.TabID);

票数 2
EN

Stack Overflow用户

发布于 2014-08-22 17:44:29

根据奥斯汀·温利的建议,我最终做到了以下几点:

代码语言:javascript
复制
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;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25409884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档