1

我搜索并尝试了很多文章,但仍然无法解决这个问题。我在 Global.asax 文件中有这段代码:

LogInClient("username", "password");

由于 Windows Azure 中发生了更新,我的所有服务 (REST) 都找不到(但这是另一回事)。Web 显示错误请求错误。我想要发生的是这样的,对于任何类型的错误,网站都会重定向到错误页面。

但我总是被重定向到这个

http://127.0.0.1:81/Error?aspxerrorpath=/
https://127.0.0.1/Error?aspxerrorpath=/

我正在通过 Cloud 项目运行我的 Asp.Net MVC 项目。

这是我到目前为止所做的:

在此处输入图像描述

网络配置

<customErrors mode="On" defaultRedirect="Error"/>

Global.asax 文件

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
}  

在此处输入图像描述

我在这里迷路了。请帮忙。

4

1 回答 1

1

你可以在你的 global.asax 中有这个:

    void Application_Error( object sender, EventArgs e )
    {
        Boolean errorRedirect = false;
        Boolean redirect404 = false;
        try
        {
            var exception = Server.GetLastError();
            var httpException = exception as HttpException;
            Response.Clear();
            Server.ClearError();
            var routeData = new RouteData();
            routeData.Values[ "controller" ] = "Errors";
            routeData.Values[ "action" ] = "General";
            routeData.Values[ "exception" ] = exception;
            Response.StatusCode = 500;
            if ( httpException != null )
            {
                Response.StatusCode = httpException.GetHttpCode();
                switch ( Response.StatusCode )
                {
                    case 403:
                        redirect404 = true;
                        break;
                    case 404:
                        redirect404 = true;
                        break;
                    default:
errorRedirect = true;
                        //todo: log errors in your log file here
                        break;
                }
            }

        }
        catch ( Exception ex )
        {
            errorRedirect = true;
        }

        if ( redirect404 )
        {
            //redirect to 404 page
            Response.Redirect( "~/404.htm" );
        }
        else if ( errorRedirect )
        {
            //redirect to error page
            Response.Redirect( "~/error.htm" );
        }
    }

还有一些错误不能被 global.asax 捕获,因此您还需要通过将以下内容放入所有 aspx 代码隐藏中或最好放在扩展的单个类中来捕获 aspx 错误,System.Web.UI.Page然后让所有代码隐藏从该类继承。放在那里的代码如下:

    protected override void OnError( EventArgs e )
    {
        try
        {
            //todo: log errors in your log files
        }
        catch ( Exception ex ) { }
        //redirect to error page
        Response.Redirect( "~/error.htm" );
    }
于 2012-11-29T09:52:54.270 回答