C# SaveFileDialog抛出System.InvalidOperationException:&x27;我的文件.xlsx';不是有效的文件名
一位客户刚刚在我们的应用程序中遇到此错误,这基本上是在Microsoft.Win32.SaveFileDialog上调用ShowDialog时发生的。完整的堆栈跟踪如下所示: System.InvalidOperationException:“我的文件.xlsx”不是有效文件 名称在Microsoft.Win32.SaveFileDialog.RunFileDialog(OPENFILENAME\u I 在Microsoft.Win32.FileDialog.RunLegacyDialog(IntPtr hwndOwner)上 在Microsoft.Win32.FileDialog.RunDialog(IntPtr hwndOwner)的 Microsoft.Win32.CommonDialog.ShowDialog(窗口所有者)位于(我们的代码) 这里) 显示对话框的代码非常标准:C# SaveFileDialog抛出System.InvalidOperationException:&x27;我的文件.xlsx';不是有效的文件名,c#,wpf,savefiledialog,invalidoperationexception,C#,Wpf,Savefiledialog,Invalidoperationexception,一位客户刚刚在我们的应用程序中遇到此错误,这基本上是在Microsoft.Win32.SaveFileDialog上调用ShowDialog时发生的。完整的堆栈跟踪如下所示: System.InvalidOperationException:“我的文件.xlsx”不是有效文件 名称在Microsoft.Win32.SaveFileDialog.RunFileDialog(OPENFILENAME\u I 在Microsoft.Win32.FileDialog.RunLegacyDialog(In
var dialog = new SaveFileDialog
{
Filter = "Excel files (.xlsx)|*.xlsx",
FileName = "My File.xlsx",
};
if (dialog.ShowDialog() == true)
{
result = dialog.FileName;
}
else
{
result = null;
}
我们的应用程序是一个运行在.NET4.0框架上的WPF应用程序。该代码在我的机器上以及在其他所有客户的机器上都可以正常工作,但它会为这个特定客户抛出此错误。我试着做了一些关于这方面的研究,但我没有发现任何有用的东西,因为什么可能导致它。文件名似乎完全有效。有什么想法吗?在Windows XP或更高版本的Windows上,此方法似乎没有相同的行为 客户运行的是Windows XP,正在打开SaveFileDialog,其中文件名包含/(“My/file.xlsx”)。这导致ShowDialog()在显示对话框之前抛出上述错误。但是,错误消息仅包含/(本例中为file.xlsx)后面的文件名部分
在Windows 8上,使用包含/的文件名调用ShowDialog没有问题。它只会阻止您在不更改名称的情况下进行保存,因为带有/的名称无效。我认为它与文件名路径的关系大于与文件名本身的关系。请尝试添加@“\in front.filename=@”\My file.xslx“@Rotem,说得好。我要检查的第一件事是,您是否正确组合了路径和文件名。我会使用
Path.Combine
我没有提供任何路径,只是提供了文件名(提示总是在上次使用时选择的文件夹中打开,这可能是默认行为)。这会改变什么吗?如果默认路径是“控制面板”,那么可能是个问题。。