是否有可能通過某種方式獲取對IServiceProvider的引用,或某種可以解決依賴關係的類的依賴?例如,當使用UseExceptionHandler
處理一個異常以向客戶端輸出有意義的內容時,我還想做一些自定義日誌記錄來記錄關於拋出的異常的一些內容。依賴注入在ASP.net核心中的飛行
例如,可以說我有這樣的代碼在Configure
方法在Startup
類我ASP.net核心項目:
app.UseExceptionHandler(
builder =>
{
builder.Run(
async context =>
{
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
context.Response.ContentType = "text/html";
var error = context.Features.Get<IExceptionHandlerFeature>();
if (error != null)
{
// TODO Log Exception. Would like to do something like this:
// var logger = ServiceProvider.Resolve<ILogger>();
// logger.LogCritical("Unhandled Error :"error.Error.ToString());
await context.Response.WriteAsync($"<h1>Error: {error.Error.Message}</h1>").ConfigureAwait(false);
}
});
});
我怎麼能當我沒有得到ILogger的一個實例一個構造函數傳入ILogger?
您使用的是什麼DI框架? –
我正在使用內置的asp.net核心DI框架。 – Kento