Сохраняйте переменную Session [] после новой сборки
-
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!