servicestack,embedded-resource,aspose-cells,C#,servicestack,Embedded Resource,Aspose Cells" /> servicestack,embedded-resource,aspose-cells,C#,servicestack,Embedded Resource,Aspose Cells" />

C# 为什么GetManifestResourceStream在运行时失败?

C# 为什么GetManifestResourceStream在运行时失败?,c#,servicestack,embedded-resource,aspose-cells,C#,servicestack,Embedded Resource,Aspose Cells,我在生产代码中遇到了一个难以重现的错误,在运行时看到GetManifestResourceStreamreturnnull 上下文:我正在运行作为Windows服务自托管的服务堆栈服务。此服务包装需要许可证文件的第三方软件。我已将许可证文件添加到项目中,并将其配置为嵌入式资源 许可证按以下方式按请求加载: var license = new License(); using (var licStream = EmbeddedResourceScope.GetStream(Constants.Li

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

上下文:我正在运行作为Windows服务自托管的服务堆栈服务。此服务包装需要许可证文件的第三方软件。我已将许可证文件添加到项目中,并将其配置为
嵌入式资源

许可证按以下方式按请求加载:

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;
    }
}
我是不是漏掉了什么明显的东西?可能与线程安全有关


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

能否检查许可证文件是否已正确添加为嵌入式资源?请共享
此.GetType().Assembly.GetManifestResourceNames()的内容。另外,请确保
Constants.LicenseFile
不仅是文件名,而且是例如
MyProject.LicenseFile.txt
(请注意开头的
MyProject,
)。可能重复