2012-05-05 70 views
1

我的問題是重定向: 2010年SharePoint用戶後創建網站,首先我需要用戶重定向到我的自定義網頁,而不是用戶重定向到新的網站網址。SharePoint 2010中從事件接收器(創建網站後)

我創建的事件reciever網頁和創建到我的網頁上重定向使用SPUtility.Redirect()後試圖網站:

public class MySiteEventReceiver : SPWebEventReceiver 
{ 
    public override void WebProvisioned(SPWebEventProperties properties) 
    { 
     var web = properties.Web; 
     base.WebProvisioned(properties); 

     string url = web.Site.Url + "/_LAYOUTS/MyPage.aspx"; 
     SPUtility.Redirect(url, SPRedirectFlags.CheckUrl, HttpContext.Current); 
    } 
} 

但始終HttpContext.Current爲null。

我一直在尋找我的問題在intrnet的解決方案。而且我發現它:http://www.sharepointkings.com/2008/05/httpcontext-in-eventhandler.html

我做到了:

public class MySiteEventReceiver : SPWebEventReceiver 
{ 
    private static HttpContext oContext; 

    public SubSiteEventReceiver() : base() 
    { 
     if (oContext == null) 
     { 
      oContext = HttpContext.Current; 
     } 
    } 
    public override void WebProvisioned(SPWebEventProperties properties) 
    { 
     var web = properties.Web; 
     base.WebProvisioned(properties); 

     string url = web.Site.Url + "/_LAYOUTS/MyPage.aspx"; 
     SPUtility.Redirect(url, SPRedirectFlags.CheckUrl, oContext); 
    } 
} 

之後的HttpContext是不是空

<Synchronization>Synchronous</Synchronization> 

(我的WebProvisioned性能同步設置),但在這種情況下,我得到錯誤「無法評估表達式,因爲代碼已經優化或者本機框架位於調用堆棧之上」。

我也試圖去重定向的另一種方式。 http://sharesilver.wordpress.com/2011/07/24/sharepoint-bugs-1-item-deleting-event-receiver/

但在這種情況下也沒有什麼不工作。

我將是任何試圖幫助感激不盡!

+0

如果你能正確地獲取上下文,然後,而不是使用SPUtility.Redirect的,你可以嘗試oContext.Response.Redirect(「URL」,假的),第二個參數(假)很重要 – Mac

回答

0

嗨u能嘗試一下本作由事件接收器重定向到您的自定義頁面

properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl; 
    properties.RedirectUrl = "/_layouts/EventReceiver/CustomError.aspx"; 

有關詳情,請這個網址

http://www.c-sharpcorner.com/uploadfile/anavijai/how-to-redirect-to-a-custom-page-for-event-receiver-in-sharepoint-2010/

讓我知道你的工作。 感謝

+0

是的,我嘗試去做。但重定向不起作用,但我也沒有得到錯誤。用戶重定向到新網站的網址。 我還添加了下面的代碼行: properties.Cancel = true; this.EventFiringEnabled = false; 但它沒有幫助。 –

+0

你們每個人都得到這個工作嗎? – ben

0

您需要添加一個構造函數來獲取當前的HttpContext,否則你的上下文將永遠是空。

請看下面的例子:http://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/8cfcb299-9a55-4139-86ec-0b53b2922a54/

+0

我通過使用第二個代碼塊使HttpContext不爲空。但是,當我嘗試使用此HttpContext(用於重定向)時,出現跟隨錯誤:「無法評估表達式,因爲代碼已優化或本機框架位於調用堆棧之上」。 –

相關問題