Недавно я переключил некоторые запросы AJAX на использование файлов ashx вместо aspx, обнаружив, что Response.End
больше не в моде. В случае, когда я смотрю сейчас, представление заказа на поставку обрабатывается ashx. Пользователь нажимает кнопку «Отправить» на PO, а файл ashx записывает время и пользователя в таблицу базы данных. Объект с данными текущего пользователя (включая их первичный ключ) сохраняется в сеансе и записывается там с помощью настраиваемого поставщика профилей. Я добавил IReadOnlySessionState
, чтобы иметь возможность доступа к сеансу, но, похоже, что если другая страница .net не была доступна, поставщик профиля не запускается, а сеанс не имеет значений. (проверено путем перехода по коду.)Как создать экземпляр профиля из файла ashx?
Я пробовал IRequiresSessionState
, но те же результаты.
Я предполагаю, что HttpHandler System.Web.UI.Page
HttpHandler создает экземпляр настраиваемого профиля, если он еще не был и что мне нужно будет добавить его в свой пользовательский HttpHandler.
Я кратко посмотрел на HttpModules, но я не думаю, что это то, что я хочу, потому что они загружаются для каждого запроса.
Вы утверждаете, что используете собственный поставщик профилей? Предоставляет ли этот провайдер данные в Session ?! Это похоже на машину rube-goldberg. – JJS
@JJS - да и да. Вы говорите, что, как машины Rube Goldberg, это не круто, LOL. Я написал это, может быть, 10 лет назад во время порта с классического сайта asp. Я подозреваю, что сделал это так, потому что «Профиль» оказался местом для размещения этой информации, а приложение asp использовало Session для хранения информации о профиле. В ретроспективе я, вероятно, должен был использовать пользовательские свойства профиля или, возможно, как функцию в пользовательском профиле, который обращался к сеансу. Любой из них может решить проблему создания объекта Profile перед доступом к сеансу. –
Машины Rube Goldberg Очень здорово, когда они работают, но это боль для поддержания. Если бы мы знали сегодня, когда знали 10 лет назад, мы бы сделали это по-другому. Оглядываясь назад, 20/20. – JJS