Я заканчивал тем, что использовал сессии.Первоначально я устанавливал значения Session в методе действия контроллера, но проблема в том, что, когда я проверял данные сеанса в действиях контроллера моих основных проектов, значения были нулевыми, вызывая ошибки при проверке информации профиля пользователя внутри моих представлений.Поэтому я просто предположил, что библиотеки классов в ссылочных библиотеках могут считывать переменные сеанса приложения-потребителя, но не могут их устанавливать.
Я был не прав.вы можете .
По сути, когда я добавляю свое представление заголовка (которое происходит из библиотеки, на которую ссылаются) в коде Razor, код для этого представления заголовка в проекте, на который делается ссылкапока ПОСЛЕ того, как весь потребляющий код действия проекта вызывается для текущего представления и возвращается ... так что, по сути, я пытаюсь получить поля сеанса до того, как они существуют.Вот почему они были нулевыми.
Вы бы ДУМАЛИ, что ВТОРОЙ раз я запустил страницу (делая обновление), ТОГДА поля сеанса были бы там, потому что ссылочный метод действия загрузил бы их, но они все еще были нулевыми,Я до сих пор не знаю, почему, и я хотел бы выяснить это ... НО я в основном только что закончил делать это успешно:
Я установил контроллеры моего потребляющего проекта для наследования от пользовательского класса.Затем внутри переопределенного метода OnActionExecuting () этого пользовательского класса ... Я проверяю, являются ли мои поля Session пустыми.Если они есть, то это (вероятно) первый раз, когда мы запускаем это, поэтому я ТО создаю новый экземпляр моего контроллера, на который ссылаемся.Я беру этот экземпляр и вызываю метод действия для заголовка.Это вызовет «начальную загрузку» данных сеанса до того, как какой-либо контроллер в любом проекте (на который ссылаются или потребляют) попытается запустить ЛЮБОЙ код действия.Это гарантирует, что когда любой контроллер попытается обратиться к этим полям сеанса, они будут там.
Технически, это приводит к тому, что мой sproc запускается с избыточностью дважды при загрузке заголовка, но ТОЛЬКО в первый раз, когда страницазагружен или, если что-то очищает сессию, что хорошо для меня.
Я читал, что сеансы - это плохой способ пересылки данных между классами, но в данном случае это информация профиля пользователя, которую я все равно хотел загрузить в переменные сеанса, так что в моем случае это сработает.,Если бы это был какой-то другой тип данных, у меня была бы проблема.