ASP.NET: Как получить доступ к Сессии от обработчика? [дубликат]

Разработка программного обеспечения - это просто работа

Не поймите меня неправильно, мне очень нравится разработка программного обеспечения. Я написал блог за последние несколько лет на эту тему. Я провел здесь достаточно времени, чтобы набрать> 5000 очков репутации. И я работаю в стартапе, обычно проводя 60 часов в неделю за гораздо меньшие деньги, чем я мог бы получить в качестве подрядчика, потому что команда фантастическая, а работа интересная.

Но, по большому счету, это просто работа.

По важности это относится ко многим вещам, таким как семья, моя подруга, друзья, счастье и т. Д., А также к другим вещам, которые я предпочел бы делать, если бы у меня был неограниченный запас денег, например, езда на мотоциклах, парусных яхтах или сноуборде.

Иногда я думаю, что многие разработчики забывают, что разработка - это просто то, что позволяет нам иметь в жизни более важные вещи (и делать это, делая то, что нам нравится), а не самоцель.

47
задан Community 23 May 2017 в 12:25
поделиться

3 ответа

Компилятор должен быть достаточно умен, чтобы распознавать, что BigFoo не может быть преобразовано в IEnumerable , но это не так. Он просто видит, что это IEnumerable , и чувствует, что это потенциальный кандидат на перегрузку (даже несмотря на то, что ограничение, которое вы определили, заставляет T быть IFoo и int нельзя преобразовать в IFoo ). Хотя это неудобно, но это не так уж и важно. Просто приведите bigFoo к IFoo , и компилятор будет доволен:

fooContainer.Add((IFoo)bigFoo);

В качестве альтернативы вы можете сделать свою общую перегрузку Add uglier:

public void Add<T, U>(U group)
    where T : IFoo
    where U : IEnumerable<T>
{
}

В любом случае у вас будет больше ввода, второе решение устранит необходимость для отправки вызовов на Добавьте , вы можете рассмотреть возможность использования SQLCipher для своей реализации. Это сборка SQLite, которая обеспечивает прозрачное шифрование всей БД на уровне страниц. На Mobile Orchard есть учебник по его использованию в приложениях для iPhone.

IRequiresSessionState interface

public class Handler : IHttpHandler, System.Web.SessionState.IRequiresSessionState 
{   
  public void ProcessRequest(HttpContext context)  
  {      
    context.Session["StackOverflow"] = "overflowing";      
    context.Response.Redirect("~/AnotherPage.aspx");      
  }

}
107
ответ дан 26 November 2019 в 19:22
поделиться

Реализуйте IRequiresSessionState

10
ответ дан 26 November 2019 в 19:22
поделиться

Решает ли эта проблема реализация iRequiresSessionState ?

А что насчет выполнения IHttpModule вместо этого и переопределения BeginRequest?

    public void Init(HttpApplication application)
    {
        application.BeginRequest += new EventHandler(context_BeginRequest);
    }
7
ответ дан 26 November 2019 в 19:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: