RazorEngine: Razor.Parse время от времени выдает исключение FileNotFoundException.

У меня возникла проблема с RazorEngine (версия 3.4.1.0).

Я использую метод Razor.Parse с очень простым шаблоном в сервисе, который запускается каждые несколько минут и в большинстве случаев работает без проблем, но время от времени он выдает мне это исключение:

System.IO.FileNotFoundException: не удалось найти файл «C:\Users\username\AppData\Local\Temp\cw3sv4yk.dll». Имя файла: 'C:\Users\имя_пользователя\AppData\Local\Temp\cw3sv4yk.dll'

(cw3sv4yk — случайно сгенерированное имя)

Кто-нибудь сталкивался с этой проблемой раньше, и если да, то какие-либо намеки на то, каким будет решение?

Спасибо, Пшемек.

РЕДАКТИРОВАТЬ:

Я только что заметил, что иногда получаю это исключение:

RazorEngine.Templating.TemplateCompilationException: невозможно скомпилировать шаблон. Файл метаданных «c:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll» не может быть открыт -- «Процесс не может получить доступ к файлу, поскольку он используется другим процессом».\n\nДругая компиляция могли возникнуть ошибки. Проверьте свойство Errors для получения дополнительной информации.

EDIT_2: еще одно исключение, которое время от времени возникает:

System.ArgumentException: требуется имя класса


person Przemo    schedule 13.06.2017    source источник


Ответы (1)


Использование перегруженной версии метода Razor.Parse, который кэширует шаблоны, решило проблему для нас:

/// <summary>
/// Parses and returns the result of the specified string template.
/// </summary>
/// <typeparam name="T">The model type.</typeparam>
/// <param name="razorTemplate">The string template.</param>
/// <param name="model">The model instance.</param>
/// <param name="cacheName">The name of the template type in the cache or NULL if no caching is desired.</param>
/// <returns>The string result of the template.</returns>
public static string Parse<T>(string razorTemplate, T model, string cacheName)
person Przemo    schedule 30.07.2017