我使用 xml 文件作为嵌入式资源来加载 XDocument。我们使用以下代码从程序集中获取适当的文件:
XDocument xd = new XDocument();
Assembly assembly = null;
try
{
assembly = Assembly.GetExecutingAssembly();
}
catch(Exception ex)
{
//Write exception to server event log
}
try
{
if(assembly != null)
{
using(StreamReader sr = new
StreamReader(assembly.GetManifestResourceStream("assemblyPath")))
{
using(XmlTextReader xtr = new XmlTextReader(sr))
{
xd = XDocument.Load(xtr);
}
}
}
}
catch(Exception ex)
{
//Write exception to server event log
}
所以当代码部署时,我们偶尔会去页面,并不会从嵌入的文档中加载任何内容。当我们检查事件日志时,没有错误。如果用户只是刷新页面,它将正常加载。这让我认为,出于某种原因,assembly = Assembly.GetExecutingAssembly();
偶尔会返回 null,而代码的编写方式并不是错误。所以,我的问题是为什么会Assembly.GetExecutingAssembly();
返回 null?我发现了几篇关于非托管代码有时会出现错误的文章,但这个应用程序是用 C# 编写的,并通过安装项目进行部署。
该代码最初是在没有错误避免代码的情况下编写的。添加它是为了防止用户收到错误屏幕。异常会写入服务器的事件日志。