Что-то вроде:

я есть одно веб-приложение ASP.NET, работающее в корне веб-сервера, которое предоставляет несколько (похожих) веб-сайтов с помощью перенаправления URL. Чтобы привести пример из реального мира:

http://webshopserver/company1/ProductList.aspx -> http://webshopserver/ProductList.aspx?showProductsFrom=company1
http://webshopserver/company2/ProductList.aspx -> http://webshopserver/ProductList.aspx?showProductsFrom=company2
...

Это работает очень хорошо; единственная проблема состоит в том, что, очевидно, все эти разные магазины используют один и тот же объект сеанса (поскольку менеджер сеансов InProc сохраняет объект сеанса в домене приложений). Мне бы хотелось, чтобы магазины company1 и company2 имели разные объекты сеанса, так что, например, если пользователь открывает магазины company1 и company2 на разных вкладках одного и того же окна браузера, элементы, помещенные в корзину компании1, выиграли не появляется в корзине компании2.

Есть несколько очевидных подходов к решению этой проблемы, которые мне не нравятся:

Создайте свой собственный объект Session, который инкапсулирует все в HashMap <CompanyName, что угодно>, а затем сохраняет его в «реальном» сеансеЭто нарушает весь существующий код, который использует объект сеанса.Используйте URL какHttp: //company1.webshopserver/ и запись DNS с подстановочными знаками, потому что cookie с идентификатором сеанса привязан к домену: Это ужасно (потому что реальный эквивалент «webshopserver» уже достаточно длинный).Написать свой собственный поставщик сессийЭто было бы как изобретать велосипед.Создайте отдельное приложение IIS для каждой компании: Не будет работать, потому что создание новых компаний должно быть возможно с помощью чего-то вродеHttp: //webshopserver/CreateYourOwnWebshop.aspx без какого-либо вмешательства человека (администратора сервера).

Я думаю больше о решении по линии:

ограничение пути файла cookie сеансаHttp: // webshopserver / <COMPANYNAME> / или жеуказав ASP.NET использовать разные домены приложений в зависимости от URL.

Таким образом, любая информация о том, как достичь одного из этих пунктов (или, возможно, другое решение) будет полезна.

Ответы на вопрос(4)

Ваш ответ на вопрос