我的项目中有一个.aspx
页面,其中有一个<a>
链接用于下载.txt
个文件。
使用Shell32.ShellClass
和Shell32.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中托管时无效?
请给我建议。
感谢。
答案 0 :(得分:0)
您的C#代码在服务器上运行,而不是在网页中运行。以这种方式打开对话框时,它将在调用代码的上下文中运行。当作为IIS Express(或任何运行的Web服务器)的一部分运行时,它将在Windows桌面中打开,因为它正在以您的身份运行。在IIS中运行时,它作为不附加到桌面的其他帐户运行,因此不会显示。
我不知道如何调用“另存为”功能将文件保存到JavaScript中的其他文件夹。 execCommand功能可能有效,但因浏览器而异。某些版本的Internet Explorer also limit what file types can be downloaded this way。