我正在開發sharepoint 2010 web應用程序。我想通過使用從SPHttpApplication繼承的Global.asax以經典的asp.net方式處理一些Applicaton事件(Begin_Request,End_Request,Application_Start)。實施IHttpModule類事件不發射,SharePoint 2010問題
我發現 two way 來區分。
第一個建議在Global類中重載SPHttpApplication。好主意,但不適合我,因爲我的應用程序被部署到另一個主站點的子站點。如果有一種方法可以解決這個問題,那將是一個很好的解決方案!
第二個建議實現IHttpModule接口並註冊來自HttpApplication上下文變量的事件。它適用於我,我創建了一個實現此接口的類的類庫項目。我也是在我的web.config文件中添加特殊的記錄:
<httpModules>
<add name="DSModule" type="Artec.DS.HttpContext.DSModule, DSModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31a3567341f39f94"/>
</httpModules>
其中「Artec.DS.HttpContext」爲項目名稱和DSModule是一個類名。 畢竟,當我開始調試時,不會調用「Init()」方法。
UPDATE
namespace Artec.DS.HttpContext
{
public class DSModule : IHttpModule
{
public void Dispose()
{
throw new NotImplementedException();
}
public void Init(HttpApplication context)
{
System.Diagnostics.Debugger.Launch();
ApplicationVariables.AppPath = context.Server.MapPath("/");
NhibernateManager.Init();
NavigationManager.Init();
}
}
}
我所有的web.config首先有錯誤的 「類型」 屬性。我對類名而不是程序集名稱感到困惑。所以合式標籤如下:
<add name="DSModule" type="Artec.DS.HttpContext.DSModule, Artec.DS.HttpContext, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31a3567341f39f94" />
的web.config system.webServer修改後/模塊(感謝CBono)的init()被調用,這是我最初的問題的答案。
但現在我得到錯誤:「System.Web.HttpException:服務器操作在此上下文中不可用。」試圖映射服務器路徑時:
context.Server.MapPath("/")
你應該把它分成一個單獨的問題。 – CBono