我有搜索并尝试了很多文章,但仍然无法解决这个问题。 我在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项目。
这是我到目前为止所做的:
的Web.Config
<customErrors mode="On" defaultRedirect="Error"/>
Global.asax文件
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
我迷失在这里。请帮忙。
答案 0 :(得分: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" );
}