Почему GetManifestResourceStream терпит неудачу во время выполнения? - PullRequest
0 голосов
/ 28 августа 2018

Я столкнулся с трудновоспроизводимой ошибкой в ​​производственном коде, когда я вижу, как 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;
    }
}

Я что-то упускаю здесь очевидное? Может быть, связано с безопасностью потока?

Когда появляется проблема времени выполнения, этот код завершается ошибкой для каждого запроса, пока служба не будет перезапущена.

...