Сохраняйте переменную Session [] после новой сборки - PullRequest
2 голосов
/ 03 августа 2009

Я хотел знать, возможно ли сохранить мыслительные сборки Session в ASP.NET + C #?

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

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

Ответы [ 3 ]

6 голосов
/ 03 августа 2009

Вы можете изменить тестовый сервер, чтобы использовать режимы состояний сеанса State Server или SQL Server , которые выдержат перезапуск приложения.

3 голосов
/ 03 августа 2009

Я использовал этот хак, когда не хотел иметь дело с аутентификацией во время разработки:

protected void Page_PreInit(object sender, EventArgs e)
    {
        // Fake authentication so I don't have to create a damn Login page just for this.
        System.Web.Security.FormsIdentity id = new FormsIdentity(new FormsAuthenticationTicket("dok", false, 30));
        string[] roles = { "a" };
        HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id, roles);
    }

Это сработает только на той странице, на которую вы его положили, хотя вы можете добавить ее на базовую страницу.

Вы обязательно должны удалить это, прежде чем продвигать код для тестирования / QA / UAT / prod!

0 голосов
/ 03 августа 2009

Этот ответ является вики-сообществом, чтобы не создавать репутацию, так как это, по сути, доработка ответа DOK. Если вам это нравится, просьба ответить на вопрос DOK.

@ Док, если вы хотите отредактировать свой ответ, чтобы включить что-либо из этого, сделайте это, и я с удовольствием удалю этот ответ. :)

DOK, как уже упоминалось в моих комментариях к вашему ответу (и, возможно, некоторой помощи для вашего собственного решения), вы можете сделать следующее:

#if DEBUG //As mentioned by DOK in the comments. If you set debug to false when building for deployment, the code in here will not be compiled.
protected void Page_PreInit(object sender, EventArgs e)
{
  bool inDevMode = false;
  inDevMode = bool.Parse(ConfigurationManager.AppSettings["InDevMode"]); //Or you could use TryParse

  if(inDevMode)
  {
    // Fake authentication so I don't have to create a damn Login page just for this.
    System.Web.Security.FormsIdentity id = new FormsIdentity(new FormsAuthenticationTicket("dok", false, 30));
    string[] roles = { "a" };
    HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id, roles);
  }
}
#endif

Чтобы дополнительно гарантировать, что вы случайно не развернете этот актив, то настройки вашего приложения будут храниться в отдельных конфигурационных файлах (а также в разделе отладки). Если вы используете проекты Web Deployment , то вы можете поместить параметры конфигурации dev в один файл, а файлы live config - в другой (обычно это dev.config и live.config!).

например, в вашем web.config:

<appSettings file="dev.config"/>

В вашем dev.config:

<appSettings>
  <add key="InDevMode" value="true" />
</appSettings>

В вашем live.config:

<appSettings>
  <add key="InDevMode" value="false" />
</appSettings>
...