我正在使用 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 母版页并单击保存按钮,它将“自定义”页面。一旦我这样做,我的代码就会停止工作,如果我随后将母版页重置回站点定义,我的代码就会再次开始工作!
我有一个解决方案文件,任何人都想安装它来查看行为。