как создать одно веб-приложение как поддомен для многих компаний

2

Я работаю над проектом, который вы можете подписаться с именем своей компании, и вы можете использовать все функции сайта специально для своей компании. например, компания abcd может получить свой собственный URL-адрес с нашего веб-сайта, например

www.test.com/abcd/productlist.aspx

Компания efgh также может войти в систему со своим собственным URL-адресом и посмотреть его список продуктов.

www.test.com/efgh/productlist.aspx

может ли кто-нибудь помочь мне, как я могу реализовать это с моим сайтом с лучшими подходами

Я думаю о подходе, который будет использовать файл Global.ascx, чтобы отличать компании, я напишу код, чтобы извлечь название компании из url в global.ascx для каждого действительного запроса, и на всех страницах я поставлю this.form.action = request.rawurl.

Есть ли другие подходы? если кто-либо выполнил этот тип функции, пожалуйста, дайте мне знать ваши подходы.

Спасибо

Теги:
multi-tenant
url-rewriting

4 ответа

0
Лучший ответ

Я не нашел решения, полностью удовлетворяющего моим требованиям, я написал для себя свою собственную логику, которая использует Global.ascx BeginRequest, страницу входа, базовую страницу и общие классы, созданные для Response.Redirect. Я больше не напрямую использую Asp.Net Response.Redirect, Paths и Session variables, вместо этого я создал обертку над ними, чтобы добавить companyName из url в Paths.

Сообщите мне, если вам нужна дополнительная информация о моем коде.

Другие ответы приветствуются.

Спасибо

1

Мы используем DLL из http://urlrewriting.net и правила, аналогичные следующему:

<urlrewritingnet xmlns="http://www.urlrewriting.net/schemas/config/2006/07">
  <rewrites>
    <add name="Customer" virtualUrl="^~/([^/]+)/([^/]+).aspx" destinationUrl="~/$2.aspx?customer=$1"/>
    <add name="CustomerStart" virtualUrl="^~/([^/]+)/$" destinationUrl="~/Default.aspx?customer=$1"/>
    <add name="CustomerStartAddSlash" virtualUrl="^http\://([^/]+)/([a-zA-Z0-9_-]+)$"
                                      destinationUrl="http://www.example.com/$2/"
                                      redirect="Domain" redirectMode="Permanent" />
  </rewrites>
</urlrewritingnet>

Эти правила выполняют следующие сопоставления. Это переписывание, поэтому пользователь всегда видит левый URL-адрес в своем браузере:

Rule 1: http://www.example.com/customerA/something.aspx => http://www.example.com/something.aspx?customer=customerA
Rule 2: http://www.example.com/customerA/ => http://www.example.com/Default.aspx?customer=customerA

Третье правило - это перенаправление, а не переписывание, т.е. он гарантирует, что конечная косая черта добавляется в пользовательский браузер (убедитесь, что относительные пути работают правильно):

Rule 3: http://www.example.com/customerA => http://www.example.com/customerA/
  • 0
    Я пытался использовать предложенный вами подход, но я предпочел написать свой собственный код для этого,
1

Если вы работаете с ASP.NET 3.5 SP1, вам следует изучить новый механизм маршрутизации, который был введен в проект MVC, Это сделает чистое решение.

  • 0
    Спасибо за ваш ответ Ajw
  • 0
    Я не работаю в рамках MVC
0

Посмотрите эти questions.
У вашего подхода есть имя. Он назывался Multitenancy.

  • 0
    Я не нашел ни одного решения, приведенного выше, полностью соответствующего моему требованию, я написал свою собственную логику для этого, которая использует BeginRequest, страницу входа в систему, базовую страницу и общие классы, созданные для Response.Redirect. Я больше не использую переменные Response.Redirect, Paths и Session Asp.Net, вместо этого я создал над ними обертки, чтобы добавить companyName из URL в Paths.
  • 0
    Рад, что вы нашли решение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню