Sharepoint主页和会话状态

时间:2009-07-10 12:02:36

标签: asp.net sharepoint moss session-state

我正在使用Heather Solomon的最小发布母版页,我有一个简单的功能,包含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());
        }
    }

}

当此页面在浏览器中加载时,我收到以下错误

未将对象引用设置为对象的实例。

然而,如果我切换到开箱即用的主页(例如Black Vertical),代码就可以了!我得到了“Mr Ben {会议ID}”的预期输出

我甚至创建了一个新的空白母版页,并将黑色垂直母版页的全部内容复制到其中。我将网站设置为这个新的母版页,我加载页面,期望一切正常,并收到'对象参考...'错误。这是如何运作的?它是完全相同的母版页,但代码只有在它是OOTB版本时才有效。

我在中央管理员中启用了会话状态,web.config文件和程序集已部署到GAC。

更新 从另一个论坛的建议看来,它似乎是一个信任问题,我错误地认为解决方案部署到GAC,它实际上是部署到Bin文件夹。我试图重置这个,但似乎无法让WSPBuilder部署到GAC的解决方案,虽然我已经设法让它停止部署到Web应用程序的bin文件夹。

有谁知道如何将解决方案部署到GAC文件夹?这是我的stsadm命令

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

Udpate 2 不,这不是信任问题,我重新创建了我的解决方案并确保它部署到GAC。如果我在sharepoint designer中打开OOTB母版页并单击“保存”按钮,它将“自定义”页面。一旦我这样做,我的代码就会停止工作,如果我然后将母版页重置回网站定义我的代码又开始工作了!

我有一个soltion文件,任何人都想安装它来查看行为。

2 个答案:

答案 0 :(得分:1)

我想我找到了原因,似乎自定义母版页包含在解决方案中,这个问题不会发生(大部分时间)。

这是一篇列出问题和可能的工作的文章

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

答案 1 :(得分:0)

我无法解决您的具体错误,Heather的母版页应该可以正常工作,但我担心您在web.config文件中提到启用会话状态。 SharePoint管理中心使用instructions here确定了正确的位置。

这是因为SharePoint提供了自己的会话管理器,因为会话必须在多个WFE之间共享。如果您真的想以标准的ASP.NET方式执行此操作,请使用Eric Kraus' instructions。但不确定这是多么受支持或者它会引起什么副作用。

尝试其中一种替代方案,让我们知道它是如何进行的。希望错误消失!