ファイルを開くダイアログを表示しようとすると、次の ArgumentException がスローされているフィールドにデプロイされている WPF アプリケーションからレポートを取得しています。
Exception Message: Value does not fall within the expected range.
Method Information: MS.Internal.AppModel.IShellItem2 GetShellItemForPath(System.String)
Exception Source: PresentationFramework
Stack Trace
at MS.Internal.AppModel.ShellUtil.GetShellItemForPath(String path)
at Microsoft.Win32.FileDialog.PrepareVistaDialog(IFileDialog dialog)
at Microsoft.Win32.FileDialog.RunVistaDialog(IntPtr hwndOwner)
at Microsoft.Win32.FileDialog.RunDialog(IntPtr hwndOwner)
at Microsoft.Win32.CommonDialog.ShowDialog(Window owner)
...
問題は、これまで開発環境でこれを再現できなかったことですが、この例外が発生しているというレポートを現場からいくつか受け取りました。
誰もこれを見たことがありますか?そして最も重要なことは、単純に try/catch を配置して、ユーザーが何をしようとしているのかを再試行するように指示する以外に、その原因や修正を知っていますか?
コメントに応答して、これはダイアログを開くコードです (いいえ、戻り値の型をチェックする問題ではありませんでした)。ShowDialog 内から例外がスローされます (スタック トレースを参照)。
Nullable<bool> result = null;
var dlg = new Microsoft.Win32.OpenFileDialog();
dlg.DefaultExt = ".txt";
dlg.Filter = "Text Files (.txt)|*.txt|All Files|*.*";
dlg.Title = "Open File";
dlg.Multiselect = false;
dlg.InitialDirectory = GetFolderFromConfig("folders.templates");
result = dlg.ShowDialog(Window.GetWindow(this));
if (result == true)
{
// Invokes another method here..
}