2016-09-16 2 views
1

Я использую Owin-конвейер и в startup.auth.cs задает интервал cookie приложения как ниже timeout = Convert.ToDouble (ConfigurationManager.AppSettings ["SessionTimeOut"]);Динамическое изменение значений конфигурации Owin

  // Owin Middleware3 - Cookie Authentication Middleware 

      app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       LoginPath = new PathString("/Account/Login"), 
       AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
       ExpireTimeSpan = TimeSpan.FromMinutes(timeout), 
       SlidingExpiration = true 

       } 
      }); 

При изменении значения SessionTimeout в web.config я должен перезапустить IIS, чтобы принимать зак новых значений, как startup.auth.cs называют только первый раз. В любом случае я могу динамически изменять время истечения срока действия cookie без перезапуска IIS. Я также использую kento.authservices для одного знака, где я настраиваю в startup.auth.cs. Мне также необходимо динамически изменять значения конфигурации. Пожалуйста, вы можете помочь в этом.

+0

Я считаю, что вы просто ничего не делаете и не нуждаетесь в перезагрузке IIS, как при смене web.config, который также запускает пул приложений –

+0

Спасибо Cuong. Но некоторые из значений конфигурации в startup.auth.cs берутся из базы данных. Когда приложение запустится в startup.auth.cs, значение будет взято из базы данных. Но после того, как пользователь регистрируется в этих значениях, они становятся изменены в базе данных через страницу администратора, а после того, как пользователь выходит из системы и запускается снова, новые измененные значения должны выполняться, но это не происходит, поскольку startup.auth.cs вызывается только один раз, когда при первом запуске приложения. Как я могу динамически изменять эти значения. – VVR147493

ответ

0

Вместо того, чтобы передавать новый объект CookieAuthenticationOptions в UseCookieAuthentication, вы можете сохранить ссылку и передать ссылку. Затем она позволит вам установить ExpireTimeSpan при его изменении.

CookieAuthenticationOptions Co = new CookieAuthenticationOptions();

А затем установите код в формате ExpressionTimeSpan в коде при изменении значения.

+0

Спасибо Абхишек. Пожалуйста, вы можете указать ссылку или пример, который делает то же самое для справки. – VVR147493

+0

В вашем случае вы можете внести следующее изменение: CookieAuthenticationOptions co = new CookieAuthenticationOptions (новый PathString («/ Account/Login»), DefaultAuthenticationTypes.ApplicationCookie, TimeSpan.FromMinutes (timeout), true); app.UseCookieAuthentication (со); Затем, когда новое значение извлекается из базы данных, вы можете назначить его co.ExpiresTimeSpan: - Co.ExpiresTimeSpan = <новое значение из базы данных>; теперь вы можете получить доступ к значению ExpiresTImeSpan в объекте CookieAuthenticationOptions через ссылку co – abhishek58g

+0

Спасибо Абхишеку. Но я получаю временные интервалы с другой страницы. На этой странице приложение, которое (IAppbuilder) недоступно, назначает новые аутентификационные файлы cookie. – VVR147493

Смежные вопросы