XDocument をロードするための埋め込みリソースとして xml ファイルを使用しています。次のコードを使用して、アセンブリから適切なファイルを取得しています。
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# で記述され、セットアップ プロジェクトを介してデプロイされます。
このコードは、もともとエラー回避コードなしで書かれています。ユーザーにエラー画面が表示されないようにするために追加されました。例外は、サーバーのイベント ログに書き込まれます。