每当我在Windows 2003服务器上安装新字体时,我都无法在我的asp.net Web应用程序中立即使用它。应用程序通过CreateFontIndirect
gdi32.dll win api获取字体,然后使用此字体在我的asp.net应用程序中创建动态文本图像。看起来字体会被缓存到某个地方,因为我只会返回默认字体。
字体缓存在重新启动后得到更新,然后我得到了正确的字体,但显然我不想在生产服务器上重新启动只是为了让新字体工作。
有没有办法刷新字体缓存?
答案 0 :(得分:13)
默认情况下,安装新字体时,只会向当前会话通知更改。因此,如果您在终端服务会话中登录服务器(似乎很可能),那么ASP.NET应用程序(将在不同的会话中运行)将不会看到更改。
重新启动时,系统会自动扫描字体目录并将其中的所有字体“注册”到当前会话中。
要“手动”注册新字体,您需要调用AddFontResource并传递字体路径。
为了使其更容易一些,您可以进行操作,以便您的应用扫描Fonts文件夹,并在其AddFontResource
事件中找到的每个文件上调用Application_Start
。这样,当您安装新字体时,您可以只回收该网站(例如编辑web.config文件),它将重新扫描所有文件。
另一种选择是将目录监视(通过FileSystemWatcher)放在Fonts文件夹中并自动重新扫描。
我想这只取决于你安装新字体的频率......
答案 1 :(得分:1)
重新启动IIS。这应该够了吧。从命令行中擦除iisreset或使用IIS管理器。
答案 2 :(得分:0)
我回收了使用字体的应用程序池,并对其进行了修复。