Я столкнулся с трудновоспроизводимой ошибкой в производственном коде, когда я вижу, как GetManifestResourceStream
возвращает null
во время выполнения.
Контекст: я запускаю службу стека служб, размещенную как служба Windows. Этот сервис распространяется на стороннее программное обеспечение, для которого требуется файл лицензии. Я добавил файл лицензии в проект и настроил его как Embedded Resource
.
Лицензия загружается на запрос следующим образом:
var license = new License();
using (var licStream = EmbeddedResourceScope.GetStream(Constants.LicenseFile))
{
// licStream can sometimes be null at runtime
license.SetLicense(licStream);
}
Вот код для EmbeddedResourceScope
public static class EmbeddedResourceScope
{
public static Stream GetStream(EmbeddedResource name)
{
var scope = typeof (EmbeddedResourceScope);
var resourceAssembly = Assembly.GetAssembly(scope);
var resourceStream = resourceAssembly.GetManifestResourceStream(scope, name);
return resourceStream;
}
}
Я что-то упускаю здесь очевидное? Может быть, связано с безопасностью потока?
Когда появляется проблема времени выполнения, этот код завершается ошибкой для каждого запроса, пока служба не будет перезапущена.