首页 > 解决方案 > 为什么 GetManifestResourceStream 在运行时失败?

问题描述

我在生产代码中遇到了难以重现的错误,我在运行时看到GetManifestResourceStream返回null

上下文:我正在运行作为 Windows 服务自托管的服务堆栈服务。此服务包含需要许可证文件的第 3 方软件。我已将许可证文件添加到项目中并将其配置为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;
    }
}

我在这里遗漏了一些明显的东西吗?也许与线程安全有关?

当运行时问题弹出时,此代码对于每个请求都会失败,直到服务重新启动。

标签: c#servicestackembedded-resourceaspose-cells

解决方案


推荐阅读