2009-07-10 93 views
1

我使用希瑟所羅門的最低發行母版頁,我有與apsx頁面的簡單功能,並執行此的SharePoint母版頁和會話狀態

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的解決方案,儘管我已經設法讓它停止部署到Web應用程序的bin文件夾。

有誰知道如何獲得解決方案以部署到GAC文件夾?這是我的Stsadm命令

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

UDPATE 2 不,這不是一個信任問題,我重新創建我的解決方案,並確保其部署到GAC。如果我在Sharepoint設計器中打開OOTB母版頁並單擊保存按鈕,它將'自定義'頁面。只要我這樣做,我的代碼停止工作,如果我然後重置母版頁回到網站定義我的代碼再次開始工作!

我有一個soltion文件是任何人想要安裝此查看行爲。

回答

0

我不能幫助您的具體錯誤和希瑟的主頁應該工作正常,但我擔心你提到在web.config文件中啓用會話狀態。正確的位置在SharePoint管理中心使用instructions here

這是因爲SharePoint提供了自己的會話管理器,因爲會話必須跨多個WFE共享。如果你確實想用這種標準的ASP.NET方式,使用Eric Kraus' instructions。不知道這是怎麼支持,或者它會帶來什麼副作用。

嘗試其中一種替代方法,讓我們知道它是如何發展的。希望錯誤消失!

+0

對不起忘了提,我啓用會話狀態在中央管理。如果你看第5點,那就是它提到修改web配置的地方。感謝您的回覆! – Rob 2009-07-10 15:03:19