私は、ロールを使用してアクセスを制限するクラス(DPCal_EventMove)のメソッドを1つ持っています。 Global.asax.csエラーハンドラとカスタムIHttpModuleエラーハンドラの両方が処理されない例外を捕捉し、Server.TransferをGlobalExceptionHandler.aspxに渡して、エラーがPrincipalPermissionのチェックに失敗したSecurityExceptionsであるかどうかを確認します。何らかの理由で、PricipalPermission-decoratedメソッドによって引き起こされた未処理例外は、いずれかのエラーハンドラを経由してルーティングされません。私の質問は次のとおりです。この例外はどこにルーティングされ、どのように捕捉して処理するのですか?以下は未処理の例外がGlobal.asaxエラーハンドラまたはカスタムIHttpModuleエラーハンドラによってキャッチされない
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ハンドラです:GlobalExceptionHandler.aspx上
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);
}
}
をPage_Loadは到達しません。
私はこのリンクがあなたのためにいくつかの良い情報を持っていると思います:http://stackoverflow.com/questions/2192093/wcf-principalpermission-attribute-exception-loggin –
WebMethod経由でページコールバック中にエラーが発生した場合クライアント側で適切にエラーを処理する必要があります。あなたは、(1) 'DPCal_EventMove'と(2)' DPCal_EventMove'の定義を呼び出すと、あなたのコードのバージョンを単純に投稿できますか? –