2012-05-05 10 views
1

私の問題は Sharepoint 2010でユーザー作成サイトを作成した後、まずユーザーをカスタムページにリダイレクトし、ユーザーを新しいサイトのURLにリダイレクトしないでください。Sharepoint 2010イベントレシーバからのリダイレクト

私は、Web用のイベントレシーバを作成して)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で私の問題の解決策を探していました。

<Synchronization>Synchronous</Synchronization> 

(私は同期WebProvisionedプロパティの設定)

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がnullではなかった後しかし、この場合には、私はエラーを取得する:私はそれをやったhttp://www.sharepointkings.com/2008/05/httpcontext-in-eventhandler.html

:そして、私はそれを見つけました"コードが最適化されているか、ネイティブフレームが呼び出しスタックの上にあるため式を評価できません" "

また、別の方法でリダイレクトしようとしました。 http://sharesilver.wordpress.com/2011/07/24/sharepoint-bugs-1-item-deleting-event-receiver/

しかし、この場合も何も動作しません。

私は何か手伝ってくれてありがとう!

+0

あなたが代わりにSPUtility.Redirectを使用するのでは正しく、コンテキストを取得することができるならば、あなたはoContext.Response.Redirect(「URL」、false)を試すことができ、二番目のパラメータ(偽)は重要です – 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/

このURLをご確認ください。 ありがとう

+0

はい、私はそれをやろうとします。しかし、リダイレクトは機能しませんが、エラーは発生しません。ユーザーは新しいサイトのURLにリダイレクトされます。 次のコード行も追加しました。 properties.Cancel = true; this.EventFiringEnabled = false; しかし、それは役に立ちません。 –

+0

あなたは誰でもこれをうまく利用しましたか? – ben

0

コンストラクタを追加して現在のhttpcontextを取得する必要があります。それ以外の場合、コンテキストは常にnullになります。

次の例を参照してください:http://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/8cfcb299-9a55-4139-86ec-0b53b2922a54/

+0

私は、2番目のコードブロックを使用してHttpContextがnullではないことを確認しました。しかし、このHttpContext(リダイレクト用)を使用しようとすると、「コードが最適化されているため、またはネイティブフレームがコールスタックの上にあるため、式を評価できません」というエラーが表示されます。 –

関連する問題