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
returnnull
上下文:我正在运行作为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,
)。可能重复