У меня есть .NET Core 1.1
API, и я обрабатываю ошибку в startup.cs, как показано ниже.Я использую Serilog
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime appLifetime, IRequestContext requestContext)
{
loggerFactory.AddSerilog();
// Ensure any buffered events are sent at shutdown
appLifetime.ApplicationStopped.Register(Log.CloseAndFlush);
var logger = loggerFactory.CreateLogger<Startup>();
app.UseExceptionHandler(
options =>
{
options.Run(
async context =>
{
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
var ex = context.Features.Get<IExceptionHandlerFeature>();
if (ex != null)
{
var errmsg = "An unexpected error has occured in API.";
var logDetails = new
{
CorrelationId = requestContext.CorrelationId,
Message = errmsg
};
logger.LogError(1001, ex.Error, "{@LogDetails}", logDetails);
await context.Response.WriteAsync(errmsg).ConfigureAwait(false);
}
});
});
app.UseMvc();
logger.LogInformation("Application has started in environment {0}", env.EnvironmentName);
}
В большинстве случаев, когда есть какое-либо исключение, Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware
регистрирует исключение, как и ожидалось, однако иногда я вижу следующее исключение в журналах
2018-09-21 18: 36: 01.670 +00: 00 [Ошибка] Произошло необработанное исключение: повторяющееся имя типа в сборке.
System.ArgumentException: повторяющееся имя типа внутриСборка(Строковое полное имя, TypeAttributes attr, Type parent, интерфейсы Type [], модуль ModuleBuilder, PackingSize iPackingSize, Int32 iTypeSize, TypeBuilder enclosingType) в System.Reflection.Emit.ModuleBuilder.DefineType (имя строки, TypeAttributes attr, Typerинтерфейсы) в Microsoft.Extensions.DiagnosticAdapter.Internal.ProxyAssembly.DefineType (строковое имя, атрибуты TypeAttributes, тип baseType, интерфейсы Type [])
в Microsoft.Extensions.DiagnosticAdapter.Internal.ProxyTypeEmitter.GenerateProxyTypeFromProperties (тип sourceType, тип targetType, проверка типа * * *)..DiagnosticAdapter.Internal.Параметры объекта) в Microsoft.Extensions.DiagnosticAdapter.DiagnosticSourceAdapter.System.IObserver> .OnNext (значение KeyValuePair`2) в System.Diagnostics.DiagnosticListener.Write (имя строки, значение объекта) в Microsoft.AspNetCore.Mvc.Internal.Control.d__20.MoveNext ()
--- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) в Microsoft.AspNetCore.Builder.RouterMiddleware.d *4.MoveNext конечной трассировки (101) *из предыдущего местоположения, в котором было сгенерировано исключение --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача-задача) в Microsoft.AspNetCore.Diagnostics.Exdleware.__ (исключение) ()
Так выглядит Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware
свое исключение при самовывозе при ведении журнала
Обновление 1
У меня есть следующие ссылки.Не уверен, какая ссылка вызывает эту проблему.Microsoft.ApplicationInsights.AspNetCore
- это 2.0
, однако для этого пакета доступны только опции 1.0.*
или 2.*.*
.Я не вижу в этом пакете 1.1.*
доступных
![enter image description here](https://i.stack.imgur.com/3ZVCc.png)