我在生产代码中遇到了难以重现的错误,在运行时我看到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;
}
}
我在这里缺少明显的东西吗?也许与线程安全有关?
弹出运行时问题时,对于每个请求,此代码都会失败,直到重新启动服务为止。