1

我正在使用 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());
        }
    }

}

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

你调用的对象是空的。

然而,如果我切换到一个开箱即用的母版页(例如黑色垂直),代码就可以工作!我得到了“Mr Ben {session ID}”的预期输出</p>

我什至创建了一个新的空白母版页并将黑色垂直母版页的全部内容复制到其中。我将站点设置为这个新的母版页,我加载了期望一切正常的页面并收到“对象引用...”错误。这是如何运作的?它是完全相同的母版页,但代码仅适用于 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。如果我在共享点设计器中打开 OOTB 母版页并单击保存按钮,它将“自定义”页面。一旦我这样做,我的代码就会停止工作,如果我随后将母版页重置回站点定义,我的代码就会再次开始工作!

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

4

2 回答 2

1

我想我找到了原因,如果自定义母版页包含在解决方案中,则似乎不会出现此问题(大多数情况下)。

这是一篇文章,列出了问题和可能的解决方法

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

于 2009-07-23T07:38:27.760 回答
0

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

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

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

于 2009-07-10T13:56:06.197 回答