Asp.net 如何获取错误日志/调试500?
我正在开发一个.NETCore2.0Web应用程序。我得到了一个模拟数据库,应用程序运行良好。今天我创建了一个干净的数据库,在IIS Express和普通IIS上都出现了这个错误。 问题是:我无法调试为什么抛出错误500。应用程序刚刚运行 我目前已尝试:Asp.net 如何获取错误日志/调试500?,asp.net,asp.net-mvc,iis,asp.net-core,.net-core,Asp.net,Asp.net Mvc,Iis,Asp.net Core,.net Core,我正在开发一个.NETCore2.0Web应用程序。我得到了一个模拟数据库,应用程序运行良好。今天我创建了一个干净的数据库,在IIS Express和普通IIS上都出现了这个错误。 问题是:我无法调试为什么抛出错误500。应用程序刚刚运行 我目前已尝试: 通过激活stdoutLogEnabled=“true”检查IIS日志,创建的唯一日志是: 托管环境:生产内容根路径: C:\Users\pistolon\Downloads\peto正在收听: 应用程序已启动。按Ctrl+C组合键关闭 从
- 通过激活stdoutLogEnabled=“true”检查IIS日志,创建的唯一日志是:
- 从startup.cs文件开始调试
public class ErrorHandlingMiddleware
{
readonly RequestDelegate _next;
static ILogger<ErrorHandlingMiddleware> _logger;
public ErrorHandlingMiddleware(RequestDelegate next,
ILogger<ErrorHandlingMiddleware> logger)
{
_next = next;
_logger = logger;
}
public async Task Invoke(HttpContext context)
{
try
{
await _next(context);
}
catch (Exception ex)
{
await HandleExceptionAsync(context, ex);
}
}
static async Task HandleExceptionAsync(
HttpContext context,
Exception exception)
{
string error = "An internal server error has occured.";
_logger.LogError($"{exception.Source} - {exception.Message} - {exception.StackTrace} - {exception.TargetSite.Name}");
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
context.Response.ContentType = "application/json";
await context.Response.WriteAsync(JsonConvert.SerializeObject(new
{
error
}));
}
}
公共类错误处理中间件
{
readonly RequestDelegate\u next;
静态ILogger\u记录器;
公共错误处理中间件(RequestDelegate next,
ILogger(记录器)
{
_下一个=下一个;
_记录器=记录器;
}
公共异步任务调用(HttpContext上下文)
{
尝试
{
等待下一步(上下文);
}
捕获(例外情况除外)
{
等待HandleExceptionAsync(上下文,例如);
}
}
静态异步任务HandleExceptionAsync(
HttpContext上下文,
例外情况(例外情况)
{
string error=“发生了内部服务器错误。”;
_logger.LogError($“{exception.Source}-{exception.Message}-{exception.StackTrace}-{exception.TargetSite.Name}”);
context.Response.StatusCode=(int)HttpStatusCode.InternalServerError;
context.Response.ContentType=“应用程序/json”;
wait context.Response.WriteAsync(JsonConvert.SerializeObject)(新
{
错误
}));
}
}
用法:
app.UseMiddleware<ErrorHandlingMiddleware>();
app.UseMiddleware();
我不认为这是足够的信息,但是如果您在使用真实数据库时看到500个错误,并且模拟数据库工作正常,我敢打赌您的问题在于连接字符串。您还可以检查以确保您也处于开发环境中
更新:您还可以尝试使用app.UseDeveloperExceptionPage() app.UseDeveloperExceptionPage();为我工作,谢谢!我可以看到错误并对其进行调试。只是想说,我花了14分钟才找到解决问题的方法。谢谢我花了一整天在这上面!