我的问题是: 在用户创建网站后的Sharepoint 2010中,首先我需要将用户重定向到我的自定义页面,而不是将用户重定向到新网站的网址。
我使用SPUtility.Redirect()创建了在我的页面上重定向后,为web创建了事件接收器并尝试了网站:
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总是为空。
我在内联网上寻找我的问题的解决方案。我找到了它: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/
但在这种情况下,也没有什么不起作用。
我会很感激任何帮助的尝试!
答案 0 :(得分:0)
您可以尝试将其从事件接收器重定向到自定义页面
properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;
properties.RedirectUrl = "/_layouts/EventReceiver/CustomError.aspx";
有关详情,请查看此网址
如果工作,请告诉我。 感谢
答案 1 :(得分:0)
您需要添加构造函数来检索当前的httpcontext,否则您的上下文将始终为null。