0

Я хостинг и разработчик на моем портале DNN. Мне нужно перенаправить пользователей, используя IP-адрес клиента. Думаю, для этой работы могут быть две идеи.Ответ перенаправления с использованием IP в dotnetnuke

1- DNN Установка

Может DNN имеет настройки для него, что я могу установить конкретный URL для IP-адресов клиентов и автоматически перенаправляет 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 и перенаправление на URL с использованием IP-адреса клиента.

В этом случае я пытаюсь создать новый модуль, но я не знаю, как я могу изменить способ onload каждой страницы, добавив к нему модуль?

ответ

1

Вы можете использовать IHttpModule и создать новый модуль для включения вашего класса, тогда вы должны добавить свой IHttpModule в web.config. Для

например
 <add name="YourModule" type="YourAssembly, YourNameSpace" preCondition="managedHandler" /> 

Смотреть это сайты: HTTP Handlers and HTTP Modules Overview и How To Create an ASP.NET HTTP Module

1

DNN имеет настройку хоста, которая разрешает или запрещает доступ к входам пользователей на основе их 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" /> 

Это будет гарантировать, что эта функция будет выполняться на всех страницах сайт, который использует скин/тему.

 Смежные вопросы

  • Нет связанных вопросов^_^