У меня есть пользовательский MembershipProvider, который я использую в приложении ASP.NET 2.0.Внутри класса, который расширяет членство поставщика, у меня есть функция с именем AttemptLogin()
, которая устанавливает переменные сеанса, если пользователь действителен.Внутри этой функции есть несколько назначений переменных сеанса, подобных следующему:
HttpContext.Current.Session["id"] = "12345";
AttemptLogin()
вызывается функцией Application_BeginRequest
в global.asax.Этот код прекрасно работает, когда я открываю его в visual studio, а затем запускаю на встроенном сервере разработки, нажимая «Начать отладку».Однако при развертывании его на нашем тестовом сервере (64-разрядная версия Windows 2003 Server, на которой запущен IIS в 32-разрядном режиме) выполнение прекращается при достижении кода, приведенного выше, и выдает следующее сообщение:
[NullReferenceException: Object reference not set to an instance of an object.]
CustomMembershipProvider.AttemptLogin() in c:\Inetpub\wwwroot\Josh\App_Code\CustomMembershipProvider.cs:1097
ASP.global_asax.Application_BeginRequest(Object sender, EventArgs e) in c:\Inetpub\wwwroot\Josh\Global.asax:14
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
Как я могу получить доступ к состоянию сеанса успешно в этой ситуации?Почему он работает локально, а не на сервере?