簡體   English   中英

由webControls引起的SharePoint WebPart捕獲錯誤

[英]SharePoint WebPart Catching error caused by webControls

我正在創建一個使用GridView和ObjectDataSource檢索數據的SharePoint WebPart。 當連接終止時(由於不同的原因),我想捕獲異常並將用戶重定向到包含信息的頁面。 我不知道我的WebPart是放置在其他WebPart中還是直接放置在頁面上。

我通過在綁定到ObjectDataSource的類的Select方法中拋出Exception來模擬錯誤:

public List<Item> getItems(String param, int maximumRows, int startRowIndex)
{
    if (param == "a") throw new Exception("exception");

每當我在代碼中調用數據綁定時,我都可以捕獲Exception(示例):

try
{
    gvMain.PageIndex = 0; //gvMian - SPGridView
    gvMain.DataBind();

}
catch (Exception ex)
{
    Page.Cache["cacheError"] = ex.Message;
    SPUtility.Redirect(SPUtility.GetPageUrlPath(HttpContext.Current) + "?wnd=err", SPRedirectFlags.Trusted, HttpContext.Current);         
}

但是有時頁面無法捕獲異常(可能是數據綁定被自動調用),並顯示帶有堆棧跟蹤的服務器錯誤:

[Exception: exception]
   MyProject.odsClass.getItems(String param, Int32 maximumRows, Int32 startRowIndex) +211

[TargetInvocationException: Obiekt docelowy wywołania zgłosił wyjątek.]
   System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) +0
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) +1255
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +38
   System.Web.UI.WebControls.ObjectDataSourceView.InvokeMethod(ObjectDataSourceMethod method, Boolean disposeInstance, Object& instance) +897
   System.Web.UI.WebControls.ObjectDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +1848
   System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +27
   System.Web.UI.WebControls.DataBoundControl.PerformSelect() +261
   System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +82
   System.Web.UI.WebControls.GridView.OnPreRender(EventArgs e) +46
   System.Web.UI.Control.PreRenderRecursiveInternal() +108
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3394

在此MSDN頁面上,我找到了一張不錯的圖片,它建議在WebPart邊界上捕獲這種異常,但是我提供的示例不清楚(我的WebPart代碼中該邊界在哪里?)

對於任何如何捕獲這種異常,如何在我的代碼中處理該異常的建議和示例,或者關於如何以任何其他方式處理此問題的任何建議,我將不勝感激。

如果您訂閱了ObjectDataSource的selected事件,那么您應該能夠適當地處理那里的錯誤。 此處說明:

如何處理ObjectDatasource的Select方法引發的異常?

我對SharePoint的主要抱怨之一是,網頁上沒有像頁面上那樣簡單的UnhandledException鈎子。 這可能是一個糟糕的設計模式,但是在像SharePoint這樣的脫鈎系統中,如果一個人的錯誤沒有使整個事情變得糟糕,那肯定會很好。 / rant。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM