Redirect 在dotnetnuke中使用IP进行响应重定向

Redirect 在dotnetnuke中使用IP进行响应重定向,redirect,dotnetnuke,dotnetnuke-module,web-user-controls,dotnetnuke-settings,Redirect,Dotnetnuke,Dotnetnuke Module,Web User Controls,Dotnetnuke Settings,我在我的DNN门户上托管和开发。我需要使用客户端IP重定向用户。我认为这项工作可能有两个想法 1-DNN设置 也许DNN有一些设置,我可以为客户端IP地址设置特定的URL,并自动将DNN重定向到特定的URL 我读了很多主题,但我找不到做它的背景 有办法做到这一点吗 2-新模块 我有一个ascx,该onload方法具有以下代码: var IP = Server.HtmlEncode(Request.UserHostAddress).ToString(); using (Entit

我在我的DNN门户上托管和开发。我需要使用客户端IP重定向用户。我认为这项工作可能有两个想法

1-DNN设置

也许DNN有一些设置,我可以为客户端IP地址设置特定的URL,并自动将DNN重定向到特定的URL

我读了很多主题,但我找不到做它的背景

有办法做到这一点吗

2-新模块

我有一个
ascx
,该
onload
方法具有以下代码:

var IP = Server.HtmlEncode(Request.UserHostAddress).ToString();         
using (Entities db = new Entities())
{
    var retVal = db.URLAddresses.Where(u => u.IPAdress == IP).FirstOrDefault();
        if (retVal != null)
            Response.Redirect(retVal.URL);
}
但我应该将此代码添加到任何ascx中,以便使用客户端IP进行重定向。这是不可能的,因为我可能没有源代码模块

我想我应该创建一个新模块。所以我可以把它添加到页面中。模块更改
onload
页面并使用客户端IP重定向到URL


在这个场景中,我尝试创建新模块,但我不知道如何更改添加模块的每个页面的
onload
方法?

DNN确实有一个主机设置,允许或拒绝用户根据其IP地址登录。它位于主机设置>高级设置>登录IP筛选器中。我认为这不会给你想要的结果

我不建议创建一个模块。将其复制到所有页面并确保每个页面都添加一个实例可能很困难

相反,我会创建一个皮肤(主题)标记。为此,创建一个简单的类库项目。创建.ascx和ascx.cs文件。您可以将.ascx保留为空,因为您没有任何html可添加到页面中。在.cs中,输入如下内容:

namespace MyCompany.DNN.Skin
{
    public partial class IpRedirect : SkinObjectBase
    {
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            // Put your redirect logic here
        }
    }
}
然后,在主题/皮肤ascx页面中,包括以下内容:

<%@ Register TagPrefix="myco" TagName="IPREDIRECT" Src="~/DesktopModules/MyCompany/IpRedirect/IpRedirect.ascx" %>

<myco:IPREDIRECT ID="pageRedirect" runat="server" />


这将确保此功能将在站点中使用皮肤/主题的所有页面上执行。

DNN的主机设置允许或拒绝用户根据其IP地址登录。它位于主机设置>高级设置>登录IP筛选器中。我认为这不会给你想要的结果

我不建议创建一个模块。将其复制到所有页面并确保每个页面都添加一个实例可能很困难

相反,我会创建一个皮肤(主题)标记。为此,创建一个简单的类库项目。创建.ascx和ascx.cs文件。您可以将.ascx保留为空,因为您没有任何html可添加到页面中。在.cs中,输入如下内容:

namespace MyCompany.DNN.Skin
{
    public partial class IpRedirect : SkinObjectBase
    {
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            // Put your redirect logic here
        }
    }
}
然后,在主题/皮肤ascx页面中,包括以下内容:

<%@ Register TagPrefix="myco" TagName="IPREDIRECT" Src="~/DesktopModules/MyCompany/IpRedirect/IpRedirect.ascx" %>

<myco:IPREDIRECT ID="pageRedirect" runat="server" />


这将确保此功能将在站点中使用皮肤/主题的所有页面上执行。

您可以使用IHttpModule并创建一个新模块来包含您的类,然后您应该将IHttpModule添加到web.config。 例如



您可以使用IHttpModule并创建一个新模块来包含您的类,然后您应该将IHttpModule添加到web.config。 例如