我正在监视应用洞察 Web 应用程序中的日志错误,但我找不到它来自哪里,也找不到我的应用程序或 Web API(.NET 4.5 和 Web API 2.0,使用 OutputCache 和 Web Api 2 Cache,MongoDB 在 Azure 中作为 Web 应用程序有 2 个实例)中的任何奇怪行为:
我的代码库是用于进行简单操作的标准代码,在单元测试中运行良好。我已经多次使用我的Web应用程序,同时有100多个用户使用,没有问题。但是在我的日志中,我有一个任务的异常。
我已经阅读了这个问题和这个,但是我不知道如何应用到我的代码中,感觉很愚蠢。
编辑:更多信息:在过去的12小时内,我已经得到了大约500个这种类型的异常,但应用程序运行良好,在过去的12小时内,我有大约167K请求。
堆栈跟踪:
任务的异常未被等待任务或访问其 Exception 属性观察。因此,未观察到的异常由终结器线程重新引发。对象引用未设置为对象的实例。
我找不到错误来自哪里,我将向您展示一些示例代码,我正在使用我的 Web API 和 Javascript 大量获取数据:
示例控制器:
public Task<IActionResult> GetDataFromMyMongoDB(string id){
var data = await _service.GetData(id);
if(data == null)
return BadRequest("Error");
return Ok(data);
}
服务:
public Task<ICollection<MyDto>> GetData(id)
{
//Check security operations for example, or business login like this:
var data = await _repositoryData.Where(d=>d.Id == id);
//For example, sometimes I do some business logic operations in which
// I use try ... catch (this code is just for show example code)
try
{
var dataToJson = JSON.parse(data);
//Dummy code dataJson to obtain a value of this and changed and update
//to repository
//** Code omited **//
var bool = await _repository.UpdateManyAsync(data);
if(bool == false)
return null;
else
{
//Here I do typical mapper operations from my
//entities to my DTOs
//** Code omited **//
return mappedListDto; // <-- Type: ICollection<MyDto>
}
}
catch(Exception ex)
{
//Log in Elmah
//Elmah stuff code here
//** Code omited **//
return null;
}
}
我的代码库是用于进行简单操作的标准代码,在单元测试中运行良好。我已经多次使用我的Web应用程序,同时有100多个用户使用,没有问题。但是在我的日志中,我有一个任务的异常。
我已经阅读了这个问题和这个,但是我不知道如何应用到我的代码中,感觉很愚蠢。
编辑:更多信息:在过去的12小时内,我已经得到了大约500个这种类型的异常,但应用程序运行良好,在过去的12小时内,我有大约167K请求。
堆栈跟踪:
System.AggregateException:
System.NullReferenceException:
at System.Web.ThreadContext.AssociateWithCurrentThread (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Web.HttpApplication.OnThreadEnterPrivate (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Web.HttpApplication.System.Web.Util.ISyncContext.Enter (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Web.Util.SynchronizationHelper.SafeWrapCallback (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Threading.Tasks.Task.Execute (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
有什么想法吗?我对此感到非常疯狂...非常感谢!