私の問題は次のとおりです。ユーザーがサイトを作成した後のSharepoint 2010では、最初にユーザーをカスタムページにリダイレクトする必要があり、ユーザーを新しいサイトのURLにリダイレクトする必要はありません。
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 です。
私はインターネットで私の問題の解決策を探していました。そして、私はそれを見つけました: 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 は null ではありませんでした (WebProvisioned プロパティ Synchronous に設定しました)。
<Synchronization>Synchronous</Synchronization>
しかし、この場合、「コードが最適化されているか、ネイティブ フレームが呼び出し履歴の上にあるため、式を評価できません」というエラーが表示されます。
また、リダイレクトのために別の方法を試しました。 http://sharesilver.wordpress.com/2011/07/24/sharepoint-bugs-1-item-deleting-event-receiver/
しかし、この場合も何もうまくいきません。
私は助けてくれることに感謝します!