ASP.NET 2.0: Почему мой класс может обращаться к объекту Session при запуске на локальном компьютере, а не при его развертывании на сервере? - PullRequest
1 голос
/ 16 марта 2011

У меня есть пользовательский 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

Как я могу получить доступ к состоянию сеанса успешно в этой ситуации?Почему он работает локально, а не на сервере?

Ответы [ 2 ]

1 голос
/ 16 марта 2011

Переменные сеанса недоступны в Application_BeginRequest, который вы должны посмотреть позже в конвейере, обработав Application_AcquireRequestState в вашем global.asax, я, честно говоря, озадачен, почему вы не получаете нулевую ссылку на вашdev box.

0 голосов
/ 16 марта 2011

Проверьте файл web.config на сервере и убедитесь, что включен режим sessionState

<sessionState mode="InProc" />
...