Совместно ли статические переменные используются в одном приложении с разными именами хостов? - PullRequest
0 голосов
/ 23 октября 2018

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

РЕДАКТИРОВАТЬ: среда размещенияэто IIS, и существует только один веб-сайт, имеющий несколько привязок к различным именам хостов.

1 Ответ

0 голосов
/ 25 октября 2018

IIS позволяет вам установить количество экземпляров, на которых ваш сайт может работать.Вы сможете получить доступ к своим переменным, если IIS настроен для запуска только одного экземпляра и несколько доменов указывают на этот единственный экземпляр.Из-за управления ресурсами IIS будет перезапускать эти экземпляры при необходимости и часто.Вот почему, если запрос приходит и обнаруживает, что IIS уже перезапустил экземпляр, он уже потеряет содержимое предыдущих значений статической переменной.Однако, если найден тот же экземпляр, статические переменные по-прежнему сохраняют свои значения.

Не рекомендуется использовать статические переменные для обработки сообщений перекрестного запроса, поскольку большинство провайдеров хостинга не используют один экземпляр для запуска вашеговеб-сайт, но может использовать веб-ферму для этого.Это также приводит нас к тому, что при обработке сессий не рекомендуется использовать внутрипроцессные сеансы.[Поскольку значения сеанса будут потеряны после перезапуска экземпляра].

Начиная с веб-ферм, многие экземпляры запускаются для обработки нескольких входящих запросов.Таким образом, один запрос может быть обработан другим экземпляром, отличным от экземпляра, который обработал предыдущий запрос.Новый экземпляр, обрабатывающий запрос, определенно не будет иметь значений переменных другого экземпляра.Даже если они являются копиями одного и того же сайта.Это связано с тем, что они распознаются как два разных приложения, работающих на сервере одновременно, и операционная система не разрешает прямой обмен статическими переменными между двумя разными приложениями.

Однако вы можете наилучшим образом использоватьнастроек приложения на стороне сервера в IIS или использовать куки для маршрутизации информации по нескольким доменам.Это позволит вам, например, обрабатывать единый вход с одного веб-сайта для всех других веб-сайтов вашей системы.Вы можете достичь этого, когда веб-сайт аутентификации устанавливает файлы cookie, доступ к которым могут получить другие веб-сайты.ASP.NET позволяет вам делать это.

Спасибо

...