【问题标题】:ShellClass.BrowseForFolder(...) DialogBox not showingShellClass.BrowseForFolder(...) 对话框未显示
【发布时间】:2014-11-06 07:21:19
【问题描述】:

我的项目中有一个.aspx 页面,里面有一个<a> 链接供下载.txt 文件。

我使用Shell32.ShellClass 和Shell32.Folder2 显示浏览文件夹 询问用户您要将文件保存在哪里而不是下载到默认的Downloads 文件夹。

下面是我的C# 显示对话框的代码。

Shell32.ShellClass shell = new Shell32.ShellClass();
            Shell32.Folder2 flder = (Shell32.Folder2)shell.BrowseForFolder(0, "Select destination folder", 0,"Desktop");
            if (flder == null)
            {
                dlgResult = DialogResult.Cancel;
            }
            else
            {
                strPath = flder.Self.Path;
                dlgResult = DialogResult.OK;                
                File.WriteAllText(strPath + "\\NewFile.txt", "file content abc tex...");
            }

问题:以上代码在本地运行良好但是当我在 IIS 上托管网站时它不工作并且不显示对话框。

在 IIS 中是否有任何特定的设置或配置?或者为什么它在 IIS 中托管时不起作用?

请给我建议。

谢谢。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    您的 C# 代码在服务器上运行,而不是在网页中。当您以这种方式打开对话框时,它会在调用代码的上下文中运行。当作为 IIS express(或任何作为您运行的 Web 服务器)的一部分运行时,它会在您的 Windows 桌面中打开,因为它是作为您运行的。在 IIS 中运行时,它以未附加到桌面的不同帐户运行,因此不会显示。

    我不知道调用“另存为”功能以将文件保存到 JavaScript 中的不同文件夹的方法。 execCommand 功能可能有效,但因浏览器而异。 Internet Explorer also limit what file types can be downloaded this way 的某些版本。

    【讨论】:

      猜你喜欢
      • 2013-06-28
      • 2016-05-30
      • 2017-02-05
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多