我在global.asax文件的Application_Error事件中有代码,它在发生错误时执行,并将错误的详细信息发送给我自己.
void Application_Error(object sender, EventArgs e)
{
var error = Server.GetLastError();
if (error.Message != "Not Found")
{
// Send email here...
}
}
Run Code Online (Sandbox Code Playgroud)
我在Visual Studio中运行它时工作正常,但是当我发布到我们的实时服务器时,Application_Error事件不会触发.
经过一些测试后,我可以Application_Error在设置时进行射击customErrors="Off",但是将其设置回来可以customErrors="On"阻止事件再次发射.
任何人都可以建议为什么Application_Error在customErrors启用时不会被解雇web.config?
我在免费的Heroku帐户上有一个PHP应用程序.今天没有明显的原因我得到Heroku的应用程序错误屏幕大约一个小时.Heroku的状态报告页面没有停机时间.
我想查看日志以找出应用程序崩溃的原因..但不知道如何做到这一点!有人能帮帮我吗?
我在我的global.asax中有一个常规异常处理程序Application_error,我试图在所有页面中隔离所有未捕获的异常.我不想使用Page_error来捕获异常,因为在很多页面上调用它是低效的.那么在异常中哪里可以找到实际导致异常的页面?
从几天前开始,我开始从我所有的Azure网站接收错误消息:
“找不到路径'/ admin / host / synctriggers'的控制器或未实现IController。”
这是我的匿名用户(或漫游器)来的。完整的错误消息如下。
这是什么意思,我应该担心其中涉及一些恶意活动吗?
Source : Error in: https://myproject.azurewebsites.net/admin/host/synctriggers?api-version=2018-11-01,
MemberName : Application_Error(Param : referrerUrl=),
SourceFilePath : C:\ProjectPath\Global.asax.cs,
Username : Anonymous
Date/Time : 20/7/2019 02:11:05
Stack Trace:
Message : The controller for path '/admin/host/synctriggers' was not found or does not implement IController.
Source : System.Web.Mvc
StackTrace : at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType)
at System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName)
at MvcSiteMapProvider.DI.ControllerFactoryDecorator.CreateController(RequestContext requestContext, String controllerName)
at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory)
at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) …Run Code Online (Sandbox Code Playgroud) 我有一个基本的ASP.NET MVC2站点,每次加载视图(非部分视图)时都会记录单个"文件不存在"错误.我很确定这是因为我从主页面引用了一个不存在的文件,但我无法弄清楚它是哪一个.
堆栈跟踪没用(见下文).有没有人有关于如何最好地调试这个的任何提示?
File does not exist. : at System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response)
at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context)
at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Run Code Online (Sandbox Code Playgroud) 我想处理应用程序范围错误并在asp.net mvc中显示ErrorView页面.有3种方法可以做到(或者我知道).
1) ErrorAttribute in BaseController:Controller class.
Can be used on individual Action/Controller/BaseController.
2) Override OnException() in the BaseController:Controller class.
Will work on Controllers derived from BaseController
3) Application_Error in Global_aspx.
Run Code Online (Sandbox Code Playgroud)
什么是最佳做法.这些方法中的哪一个应该用于应用程序范围的错误处理,或者我们应该使用多个还是仅使用一个.
如果我们在BaseController上处理ErrorAttribute或/和OnException()的错误,我们仍然应该在Application_Error()中处理它.
我们什么时候应该使用Application_Error()?
什么是处理错误的最佳方法,例如
从客户端检测到一个潜在危险的Request.Form值"
在ASP.NET中?
我想保持验证,因为我的表单没有正当理由允许HTML字符.但是,我不太确定如何以更友好的方式处理此错误.我尝试在一个处理它,Page_Error但据我所知,这发生在较低级别的部分,所以该Page_Error功能永远不会触发.
因此,我可能不得不求助于Application_Error在我的Global.asax文件中使用.如果这是处理该错误的唯一方法,有没有办法专门处理这个错误?我不想以同样的方式处理所有应用程序错误.
谢谢
如何在Application_Error()中知道asp.net中的请求是ajax
我想在Application_Error()中处理应用程序错误.如果请求是ajax并且抛出了一些异常,则在日志文件中写入错误并返回包含客户端错误提示的json数据.否则,如果请求是同步的并且抛出了一些异常,请在日志文件中写入错误,然后重定向到错误页面.
但现在我无法判断请求是哪种.我想从标题中获取"X-Requested-With",遗憾的是标题的键不包含"X-Requested-With"键,为什么?
每次我的ASP.NET-Application抛出错误时,我都在使用Log4Net并进行日志记录:
protected void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
Log.Error("An error occurred", ex);
}
Run Code Online (Sandbox Code Playgroud)
唉,每当我访问我的应用程序页面时,System.Web.HttpException都会发现"文件不存在".
这是堆栈跟踪:
bei System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response)
bei System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context, String overrideVirtualPath)
bei System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state)
bei System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
bei System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Run Code Online (Sandbox Code Playgroud)
我没有任何线索如何调试,这发生在我的ASP.NET开发服务器和IIS 7.5上我部署它.
首先,快速完成我想要实现的目标:将特定异常转换为HTTP 404,以便ASP.NET可以进一步处理它.
我用这种方式处理ASP.NET(MVC2)中的异常:
protected void Application_Error(object sender, EventArgs e) {
var err = Server.GetLastError();
if (err == null)
return;
err = err.GetBaseException();
var noObject = err as ObjectNotFoundException;
if (noObject != null)
HandleObjectNotFound();
var handled = noObject != null;
if (!handled)
Logger.Fatal("Unhandled exception has occured in application.", err);
}
private void HandleObjectNotFound() {
Server.ClearError();
Response.Clear();
// new HttpExcepton(404, "Not Found"); // Throw or not to throw?
Response.StatusCode = 404;
Response.StatusDescription = "Not Found";
Response.StatusDescription = "Not Found";
Response.Write("The …Run Code Online (Sandbox Code Playgroud) asp.net error-handling application-error http-status-code-404