2013-03-05 3 views
0

Я пытаюсь использовать SessionAuthenticationModule для создания токена и записи его в файлы cookie вместо использования старого FormAuthentication.SetAuthCookie. Это значит, что я могу также добавить претензии к моему основному лицу и предоставить их по каждому запросу..NET 4.5 SessionAuthenticationModule

Он отлично работает на моем собственном компьютере, но когда я развертываю его на сервере, я получаю эту ошибку: Указанный аргумент был вне диапазона допустимых значений. Имя параметра: keyExpirationTime

Источник: System.IdentityModel Трассировка стеки pointsto один из перегруженных конструкторов - это, кажется, ушли от моего первоначального вызова CreateSessionSecurityToken через TokenHandler, а затем через пару конструкторов.

My SessionAuthenticationModule - это класс, который я написал сам, но получен из System.IdentityModel.Services.SessionAuthenticationModule и переопределяет OnPostAuthenticateRequest.

Я отправляю DateTime.Now и DateTime.Now.AddMinutes (20) для validFrom и validTo params (в отдельном примечании, может ли это быть настройкой конфигурации, и если да где?), Я мог бы настроить AppSetting для минут, но, предположительно, где-то есть настройка конфигурации безопасности?)

Я искал это сообщение об ошибке, но не могу найти упоминания об этом.

Я использовал функцию FederationAuthentication.SessionAuthenticationModule.CreateSessionSecurityToken и также попробовал HttpContext.Current.ApplicationInstance.Modules ("SessionAuthenticationModule") - оба работают на моей машине dev, но не работают на сервере.

У сервера Windows 2008 R2 у меня есть Windows 7 Professional. Оба имеют IIS 7.5.7600.16385. Оба имеют .NET 4.5, установленный с помощью dotNetFx45_Full_setup.exe v4.5.50709.17929. Для тестирования я просто использую виртуальное приложение под веб-сайтом по умолчанию, в котором используется 64-битный пул приложений с интегрированным конвейером и оба пула приложений работают под AppPoolIdentity.

Создается функция CreateSessionSecurityToken со страницы, которая выполняется после того, как процедура sessionauthennationation добавила требование.

Это обязательно будет что-то довольно простое, но мне нужна помощь в выяснении, что это такое! Было бы очень полезно помочь.

благодаря Phil

ответ

3

Все образцы говорит "Use DateTime.UtcNow", вы можете попробовать? Также вы можете вставить значение null в значение ValidTo, чтобы указать, что значение должно быть определено добавлением значения свойства SessionSecurityTokenHandler.DefaultTokenLifetime к времени, указанному параметром validFrom.

+0

спасибо - по какой-то причине я не получаю ответы, отправленные на мой адрес электронной почты, так что только что увидели это. Как оказалось, я справился с этим, но вы правы, UtcNow работал на меня – user2047485

+0

Сказав, что null не работает для параметра ValidTo. Нужна ли мне настройка конфигурации для SessionSecurityToken DefaultTokenLifetime? – user2047485