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

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

www.test.com / abcd / productlist.aspx

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

www.test.com / efgh / productlist.aspx

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

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

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

Спасибо

Ответы [ 4 ]

1 голос
/ 18 января 2010

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

1 голос
/ 18 января 2010

Мы используем 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 голосов
/ 05 ноября 2011

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

Дайте мне знать, если вам нужна дополнительная информация о моем коде

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

Спасибо

0 голосов
/ 18 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...