Asp.net mvc 4 如何使操作仅由mvc应用程序调用,而不是由直接url请求调用

Asp.net mvc 4 如何使操作仅由mvc应用程序调用,而不是由直接url请求调用,asp.net-mvc-4,http-status-code-404,asp.net-mvc-routing,global-asax,Asp.net Mvc 4,Http Status Code 404,Asp.net Mvc Routing,Global Asax,在我的mvc应用程序中,我通过检查global.asax.cs中application_EndRequest()方法中的响应代码并返回自定义404/error页面来处理404和505错误,如下所示 protected void Application_EndRequest() { if (Context.Response.StatusCode == 404) { Response.Clear();

在我的mvc应用程序中,我通过检查global.asax.cs中application_EndRequest()方法中的响应代码并返回自定义404/error页面来处理404和505错误,如下所示

protected void Application_EndRequest()
    {
            if (Context.Response.StatusCode == 404)
            {
                Response.Clear();
                var rd = new RouteData();
                rd.Values["controller"] = "Errors";
                rd.Values["action"] = "PageNotFound";

                IController c = new ErrorsController();
                c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
            }

            else if (Context.Response.StatusCode == 500)
            {
                Response.Clear();
                var rd = new RouteData();
                rd.Values["controller"] = "Errors";
                rd.Values["action"] = "ServerError";

                IController c = new ErrorsController();
                c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
            }
        }
    }
public ActionResult PageNotFound()
    {
        Response.StatusCode = (int)HttpStatusCode.NotFound;
        return View();
    }

    public ActionResult ServerError()
    {
        Response.StatusCode = (int)HttpStatusCode.InternalServerError;
        return View("Error");
    }
我有如下错误

protected void Application_EndRequest()
    {
            if (Context.Response.StatusCode == 404)
            {
                Response.Clear();
                var rd = new RouteData();
                rd.Values["controller"] = "Errors";
                rd.Values["action"] = "PageNotFound";

                IController c = new ErrorsController();
                c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
            }

            else if (Context.Response.StatusCode == 500)
            {
                Response.Clear();
                var rd = new RouteData();
                rd.Values["controller"] = "Errors";
                rd.Values["action"] = "ServerError";

                IController c = new ErrorsController();
                c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
            }
        }
    }
public ActionResult PageNotFound()
    {
        Response.StatusCode = (int)HttpStatusCode.NotFound;
        return View();
    }

    public ActionResult ServerError()
    {
        Response.StatusCode = (int)HttpStatusCode.InternalServerError;
        return View("Error");
    }
现在,当我在地址栏中键入url时,如
http://mydomain/errors/servererror
,它显示我当前的自定义错误页面

所以我想通过访问这个页面来阻止用户,那么我如何才能做到这一点呢

附言。
到目前为止,我已尝试通过配置名为“Errors/ServerError”的路由并将其重定向到其他位置来解决此问题,但我认为可能还有另一个好方法。

您可以尝试[Authorize]。看见herehttp://stackoverflow.com/questions/18413036/override-the-user-isinrole-and-authorizeroles-admin-for-mvc4-application 对于他如何使用角色来优化谁被允许,这将不起作用,因为用户可以是任何人来查看错误和404页面,我只想从应用程序内部调用我的操作,而不是从浏览器调用