小编ext*_*ndy的帖子

.NET PrivateFontCollection - 完成后如何释放文件锁

我有一个返回PrivateFontCollection的函数:

Public Shared Function GetCustomFonts() As PrivateFontCollection
    Dim result = New PrivateFontCollection

    Dim customFontFiles = {"Garamond.TTF", "Garamond-Bold.TTF", "Garamond-Italic.TTF", "EurostileExtended-Roman-DTC.TTF"}

    For Each fontFile In customFontFiles
        result.AddFontFile(Hosting.HostingEnvironment.MapPath("/Includes/" & fontFile))
    Next

    Return result
End Function
Run Code Online (Sandbox Code Playgroud)

然后我使用如下函数:

Using customFonts = Common.GetCustomFonts()
    ' Do some stuff here
End Using
Run Code Online (Sandbox Code Playgroud)

我希望文件将被释放,但它们仍然被锁定:我收到以下错误:'操作无法完成,因为文件在System中打开.关闭文件,然后重试.

在IIS中关闭网站没有帮助; 我们必须回收应用程序池才能发布它.

任何人都可以建议如何使用PrivateFontCollection这样的方式使文件在使用之间释放?

vb.net asp.net dispose filelock privatefontcollection

6
推荐指数
1
解决办法
787
查看次数

在控制台应用程序中将 Serilog 与 ApplicationInsights 一起使用时,从不调用 ITelemetryInitializer.Initialize

我在我的 .NET Core 3.1 控制台应用程序中按如下方式配置 DI:

services.AddSingleton<ITelemetryInitializer, TelemetryInitializer>();
services.AddApplicationInsightsTelemetryWorkerService(instrumentationKey);
Run Code Online (Sandbox Code Playgroud)

appSettings.json我有:

"Serilog": {
  "Using": [
    "Serilog.Sinks.Console",
    "Serilog.Sinks.ApplicationInsights"
  ],
  "MinimumLevel": "Information",
  "WriteTo": [
    {
      "Name": "Console",
      "Args": {
        "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}",
        "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
      }
    },
    {
      "Name": "ApplicationInsights",
      "Args": {
        "restrictedToMinimumLevel": "Information",
        "InstrumentationKey": "...",
        "telemetryConverter": "Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights",
        "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}",
        "formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
      }
    }
  ],
  "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ]
}
Run Code Online (Sandbox Code Playgroud)

Serilog 的配置如下:

Host.CreateDefaultBuilder(args)
    .UseSerilog((hostingContext, loggerConfiguration) =>
        loggerConfiguration.ReadFrom.Configuration(hostingContext.Configuration)
    )
    .UseConsoleLifetime()
    .Build()
    .Run()
Run Code Online (Sandbox Code Playgroud)

我的初始化类: …

c# serilog azure-application-insights .net-core

4
推荐指数
1
解决办法
492
查看次数