將Asp.NET應用程序嵌入到SharePoint

爲什麼要將Asp.net應用程序嵌入到SharePoint?這個我們不討論!我們將要討論的是如何將Asp.net應用程序嵌入到SharePoint,以及其中可能會遇到的問題。

正文開始:

    我們這裏是建立了一個Web應用程序裏面有一個Demo.aspx頁,代碼如下:

namespace WebInMOSS

{

public partial class _Demo: System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

Response.Write("Web Can In Moss");

 

}

 

 

}

}

將此程序編譯,生成一個WebInMOSS.dll文件,將此dll拷貝到網站目錄下bin文件夾,增加節點:

<SafeControl Assembly="WebInMOSS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Namespace="WebInMOSS" TypeName="*" Safe="True" />

然後將Demo.aspx頁面放入MOSS中。放入方式你可以選擇使用SPD,或者直接上傳文檔庫。我們這裏放入"Pages"中。

在MOSS中瀏覽pages/Demo.aspx,

是否刪除autoeventwireup就可以了呢?的確,在刪除AutoEventWireup="true"後

頁面顯示Web Can In Moss,證明執行成功。

增加web應用程序複雜度,在Demo.aspx放入一個button ,其事件如下:

    protected void Button3_Click(object sender, EventArgs e)

{

SPSite siteCollection = new SPSite("http://xuwei:8080");

 

SPWeb site = siteCollection.OpenWeb("/Docs/");

 

SPList list = site.Lists["通知"];

 

SPListItemCollection items = list.Items;

 

foreach (SPListItem item in items)

{

 

Response.Write("<br/>");

Response.Write(item["Title"].ToString());

 

 

}

 

 

}

在VS2005中調試得出結果(各位看客請先忽略write session和read session 2個button):

將重新編譯後的程序dll,Demo.aspx按前面方式放入MOSS中。重新瀏覽

此時又出現Onclick事件不能使用,如何是好?我們必須啓動MOSS的安全模式才能執行服務器端事件。操作如下:

我們找到Web.config 文件的<SharePoint>節點,在 <PageParserPaths> </PageParserPaths>

節點下增加一個虛擬路徑 <PageParserPath VirtualPath="/*" CompilationMode="Always" AllowServerSideScript="true" IncludeSubFolders="true" />

聲明此站點下所有文件允許服務器端事件,當然你也可以制定虛擬目錄是那個文件夾,但是這個值 必須以 ~/ 或 / 開頭,並且必須以文件名或 * 結尾。

保存Demo.aspx後瀏覽頁面,能夠正常顯示,點擊listobject button(各位看客請先忽略write session和read session 2個button),OK,正常執行顯示了!

再次增加web應用程序複雜度,加入Session,(在MOSS開發中不管採取那種方式,只要是和自己的程序相集成,總會碰到Session的問題)。

代碼如下:

    protected void Button1_Click(object sender, EventArgs e)

{

Session["Count"] = "1";

}

 

protected void Button2_Click(object sender, EventArgs e)

{

if (Session["Count"] != null)

{

Response.Write("<br><font color=red>"+Session["Count"].ToString()+"</font>");

}

}

編譯保存後再次瀏覽頁面,點擊listobject button能夠正常顯示結果,可是當點擊 Write Session時,出現

這個提示出現得夠霸氣!天曉得是什麼意外錯誤!我試圖修改<customErrors mode="Off" />讓MOSS顯示出錯誤信息,但是失敗。查找Log文件也沒有

發現什麼蹤跡,還好 一開始就預計到Session可能會出現問題,檢查Web.config發現

<pages enableSessionState="false" enableViewState="true" enableViewStateMac="true" validateRequest="false" pageParserFilterType="Microsoft.SharePoint.ApplicationRuntime.SPPageParserFilter, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" asyncTimeout="7">

呵呵,Session默認處於關閉狀態,當然無法正常執行。將其設置爲 true後保存。瀏覽demo.aspx頁面,點擊write session 和read Session,能夠正常執行。

這次遇到的問題是如何將帶User Control的Web應用程序簽入到MOSS。

在將一個帶User Control的應用程序嵌入到MOSS時,瀏覽頁面出現

處理 MenuFrame.aspx 時出現錯誤。此頁中不允許使用引用的文件" Department/DeptTree.ascx"。 Windows SharePoint Services 疑難解答。

又是一頭霧水,難道MOSS不允許使用User Control麼??難道只能使用Web part封裝出來?要是封裝

Web Part的話,我的Web應用程序改動就太大了。回想以前在做Custom Action的時侯修改過一個User Control,

那麼在MOSS中就應該能夠直接使用User Control的啊!在Web.Config裏面搜索了半天,終於發現,有個節點

<SafeControl Src="~/_controltemplates/*" IncludeSubFolders="True" Safe="True" AllowRemoteDesigner="True" />

Controltemplates 不正是我當初修改MOSS usercontrols所在的位置麼?看到此節點突然心中燃起了希望,對,就是此節點了,

於是趕緊Copy此節點,修改 Src爲自己Web應用程序User Control所在的目錄,保存Web.Config.重新瀏覽頁面,Good!包含

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章