Сохраняйте переменную Session [] после новой сборки

StackOverflow https://stackoverflow.com/questions/1219755

  •  10-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

Этот ответ является вики-сообществом, чтобы не создавать репутацию, поскольку он фактически перерабатывает ответ DOK. Если вам это нравится, просьба сообщить ответ в 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

Чтобы еще больше убедиться, что вы случайно не развернули этот актив, настройки вашего приложения будут в отдельных конфигурационных файлах (а также в разделе отладки). Если вы используете веб-развертывание проекты, тогда вы можете поместить ваши настройки dev-конфигурации в один файл, а ваши живые конфигурационные файлы - в другой (обычно это 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>

Другие советы

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

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

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!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top