2009-07-10 1 views
1

Я использую минимальную публикацию главной страницу Heather Соломона, у меня есть простая функция с страницей apsx и коды за файл, который делает этотSharepoint Master Pages и состояние сеанса

public class SSInformPage : Page 
{ 
    protected Literal Literal1; 

    protected override void OnLoad(EventArgs e) 
    { 
     //base.OnLoad(e); 
     try 
     {     
      HttpContext.Current.Session["Name"] = "Mr Ben"; 
      Literal1.Text = string.Format("{0} {1}", HttpContext.Current.Session["Name"].ToString(), Session.SessionID); 
     } 
     catch (Exception ex) 
     { 
      Literal1.Text = string.Format(ex.Message.ToString()); 
     } 
    } 

} 

Когда эта страница загружает в браузере я получаю следующую ошибку:

Ссылка на объект не установлена ​​в экземпляр объекта.

Однако, если я перехожу на главную страницу с оригиналом (например, черный вертикальный), код работает! Я получаю ожидаемый результат «Mr Ben {session ID}»

Я даже создал новую пустую главную страницу и скопировал в нее все содержимое главной страницы Black Vertical. Я установил сайт на эту новую главную страницу, я загружаю страницу, ожидающую, что все будет работать, и получит ошибку «Ссылка на объект ...». Как это работает? Это точно такая же главная страница, но код работает только в том случае, если это версия OOTB.

Я включил состояние сеанса в центральном администраторе, файл web.config и сборка развернуты в GAC.

Update Из предложения на другом форуме это, кажется, является вопрос доверия, я ошибалась, думая, решение развертывается в GAC, он был на самом деле развертывания в папку Bin. Я попытался сбросить это, но, похоже, не может заставить WSPBuilder развертывать решение GAC, хотя мне удалось заставить его прекратить развертывание в папке bin в веб-приложении.

Кто-нибудь знает, как получить решение для развертывания в папку GAC? это моя команда Stsadm

stsadm -o deploysolution -name Test.SessionState.Solution.wsp -immediate -url http://example -allowGacDeployment -allowCasPolicies -force 

Udpate 2 Нет, это не вопрос доверия, я воссоздал мое решение, и гарантирует, что он разворачивает в GAC. Если я открою главную страницу OOTB в дизайнере sharepoint и нажмите кнопку «Сохранить», она будет «настраивать» страницу. Как только я это сделаю, мой код перестает работать, если я снова сброшу главную страницу на определение сайта, мой код снова заработает!

У меня есть файл soltion, который хочет установить это, чтобы увидеть поведение.

ответ

1

Я думаю, что я нашел причину, кажется, если пользовательская главная страница завернута в решение, эта проблема не возникает (большую часть времени).

Вот статья перечисляя выпуск и возможной работу обходных

https://stackoverflow.com/questions/981836/perform-find-and-replace-in-visual-studio-build-events

0

Я не могу помочь с вашей конкретной ошибкой, и главная страница Хизер должна работать нормально, однако я обеспокоен тем, что вы указываете включение состояния сеанса в файле web.config. Правильное место находится в Центре администрирования SharePoint, используя instructions here.

Это связано с тем, что SharePoint предоставляет собственный диспетчер сеансов, поскольку сеанс должен быть разделен между несколькими WFE. Если вы действительно хотите сделать это стандартным способом ASP.NET, используйте Eric Kraus' instructions. Не знаете, как это поддерживается или какие побочные эффекты он вызывает.

Попробуйте один из этих вариантов и сообщите нам, как это происходит. Надеюсь, ошибка исчезнет!

+0

извините забыли упомянуть, что я включил состояние сеанса в центре администратора. Если вы посмотрите на пункт 5, здесь упоминается изменение веб-конфигурации. спасибо за ответ, хотя! – Rob

+0

Я только что проверил, и я могу подтвердить, что информация о сеансе хранится в таблице «ASPStateTempSessions» поставщика общих услуг. – Rob

+0

Хммм ... Я буду продолжать думать и сообщить, если я придумаю что-нибудь еще. Пожалуйста, добавьте ответ, если вы его разработаете, прежде чем кто-либо из нас сделает! –