ShellClass.BrowseForFolder(...)DialogBox没有显示

时间:2014-11-06 07:21:19

标签: c# asp.net

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

使用Shell32.ShellClassShell32.Folder2显示浏览文件夹以询问用户您希望保存文件的位置,而不是在默认的Downloads文件夹中下载。

以下是显示DialogBox的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上托管网站时,它无法正常工作且无法显示DialogBox。

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

请给我建议。

感谢。

1 个答案:

答案 0 :(得分:0)

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

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