0

全てにおいて良い日!問題を解決しようとしています。私はサイト上のすべてのエラーを処理する方法を使用しています(この方法は1人の男性のブログにあります)

Global.asax

protected void Application_Error(object sender, EventArgs e)
{
    HttpContext ctx = HttpContext.Current;
    Exception ex = ctx.Server.GetLastError();
    ctx.Response.Clear();

    RequestContext rc = ((MvcHandler)ctx.CurrentHandler).RequestContext;
    IController controller = new CategoryController(); 
    var context = new ControllerContext(rc, (ControllerBase)controller);

    var viewResult = new ViewResult();

    var httpException = ex as HttpException;
    if (httpException != null)
    {
        switch (httpException.GetHttpCode())
        {
            case 404:
                viewResult.ViewName = "Error404";
                break;

            case 500:
                viewResult.ViewName = "Error500";
                break;

            default:
                viewResult.ViewName = "Error";
                break;
        }
    }
    else
    {
        viewResult.ViewName = "Error";
    }

    viewResult.ViewData.Model = new HandleErrorInfo(ex, context.RouteData.GetRequiredString("controller"), context.RouteData.GetRequiredString("action"));
    viewResult.ExecuteResult(context);
    ctx.Server.ClearError();
}

スタジオでプロジェクトを開始すると、エラーが発生します。そのコードで例外が発生します:

RequestContext rc = ((MvcHandler)ctx.CurrentHandler).RequestContext;

例外:

タイプ' 'のオブジェクトをタイプ' System.Web.DefaultHttpHandler'にキャストできませんSystem.Web.Mvc.MvcHandler

デバッグを停止したら(Shift + F5)。この方法はうまく機能し、エラーを処理します。しかし、プロジェクトの開始時に、エラーが発生します。これらのトピックの解決策を探していますが、この問題は見つかりません。助けてください。

[HandleError]
public class CategoryController : Controller
{
     // some methods
}
4

1 に答える 1

1

コードを使用して彼の問題を解決しました:

void Application_Error(object sender, EventArgs e)
        {
            Exception ex = Server.GetLastError();
            if (ex is HttpException && ((HttpException)ex).GetHttpCode() == 404)
            {
                Response.Redirect("~/Error/404");
            }
            else
            {
                Response.Redirect("~/Error/Other");
            }
            Server.ClearError();
        }
于 2013-03-08T23:59:59.630 に答える