Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SaveFileDialog抛出System.InvalidOperationException:&x27;我的文件.xlsx';不是有效的文件名_C#_Wpf_Savefiledialog_Invalidoperationexception - Fatal编程技术网

C# SaveFileDialog抛出System.InvalidOperationException:&x27;我的文件.xlsx';不是有效的文件名

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

一位客户刚刚在我们的应用程序中遇到此错误,这基本上是在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(窗口所有者)位于(我们的代码) 这里)

显示对话框的代码非常标准:

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
我没有提供任何路径,只是提供了文件名(提示总是在上次使用时选择的文件夹中打开,这可能是默认行为)。这会改变什么吗?如果默认路径是“控制面板”,那么可能是个问题。。