Один из моих клиентов испытывает сбой в моем приложении WPF при сохранении файла.
Код моего файла сохранения:
var saveFileDialog = new SaveFileDialog {
InitialDirectory = string.Concat(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), @"\MyApp"),
FileName = "MyFile",
OverwritePrompt = true,
AddExtension = true
};
if (saveFileDialog.ShowDialog() == true) {
...
}
И вот исключение, которое они получают:
Value does not fall within the expected range.
A System.ArgumentException occurred
at MS.Internal.Interop.HRESULT.ThrowIfFailed(String message)
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()
(Где ShowDialog
в последней строке относится к вызову, который я делаю в своем коде выше.)
Итак, я предполагаю, что в случае моего клиента вызов Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) возвращает что-то, что SaveFileDialog
не нравится как InitialDirectory
. Я обнаружил в веб-поиске (и подтвердил), что эта ошибка возникает при передаче относительного пути как InitialDirectory
диалогового окна SaveFileDialog. Возможно ли, что Environment.SpecialFolder.MyDocuments
может быть возвращен как относительный путь? Если нет, кто-нибудь знает другой потенциально недопустимый формат? Может ли быть причиной определенный сетевой путь SpecialFolder.MyDocuments? Любые другие идеи?
У меня нет прямого доступа к машине моего клиента, и они не особо разбираются в технологиях, поэтому невозможно быть на 100% уверенным в том, что происходит.