Главные страницы Sharepoint и состояние сеанса - PullRequest
1 голос
/ 10 июля 2009

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

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.

Обновление Судя по предложению на другом форуме, это похоже на проблему доверия, я ошибся, полагая, что решение развертывается в 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 и нажму кнопку «Сохранить», она «настроит» страницу. Как только я это делаю, мой код перестает работать, и если я возвращаю главную страницу обратно к определению сайта, мой код снова начинает работать!

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

Ответы [ 2 ]

1 голос
/ 23 июля 2009

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

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

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

0 голосов
/ 10 июля 2009

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

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

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

...