我有一个类的方法 (DPCal_EventMove),希望能够限制只有特定角色才能访问。我写了一个全局错误处理程序(Global.asax.cs)和一个自定义的IHttpModule错误处理程序,旨在捕获未处理的异常并将其Server.Transfer到GlobalExceptionHandler.aspx进行检查,以查看是否是由于未通过PrincipalPermission检查而导致的SecurityExceptions错误。但不知为何,由PrincipalPermission修饰的方法引发的未处理异常并不会被路由到我的任何错误处理程序中。我的问题是:这个异常被路由到哪里去了?我应该如何捕获并处理它?
public partial class DayView : Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Do some stuff
}
[PrincipalPermission(SecurityAction.Demand, Role = "Investigator")]
[PrincipalPermission(SecurityAction.Demand, Role = "Administrator")]
protected void DPCal_EventMove(object sender, DayPilot.Web.Ui.Events.EventMoveEventArgs e)
{
// If no overlap, then save
int eventId = Convert.ToInt32(e.Value);
MembershipUser user = Membership.GetUser();
if (!CommonFunctions.IsSchedulingConflict(eventId, e.NewStart, e.NewEnd) &&
Page.User.HasEditPermission(user, eventId))
{
dbUpdateEvent(eventId, e.NewStart, e.NewEnd);
GetEvents();
DPCal.Update();
}
}
}
以下是我的Global.asax.cs文件:
public class Global : System.Web.HttpApplication
{
protected void Application_Error(object sender, EventArgs e)
{
Server.Transfer("~/GlobalExceptionHandler.aspx?ReturnUrl=" + Request.Path);
}
}
以下是我的自定义IHttpModule处理程序:
public class UnhandledExceptionModule : IHttpModule
{
private HttpApplication _context;
private bool _initialized = false;
public void Init(HttpApplication context)
{
_context = context;
_initialized = true;
context.Error += new EventHandler(Application_Error);
}
public UnhandledExceptionModule()
{
_initialized = false;
}
public void Dispose()
{
if (_initialized)
_context.Dispose();
}
public void Application_Error(object sender, EventArgs e)
{
if (_initialized)
_context.Server.Transfer("~/GlobalExceptionHandler.aspx?ReturnUrl=" + _context.Request.Path);
}
}
GlobalExceptionHandler.aspx页面上的Page_Load事件从未被触发。
DPCal_EventMove
和DPCal_EventMove
的定义时进行排查? - Jaime Torres