【发布时间】:2019-03-27 07:12:55
【问题描述】:
我为我的 SQL 数据库编写了 dll,它从表中获取 BLOB 数据并将其转换为 pdf 文件。它工作得很好,但我尝试添加对话框窗口来选择 pdf 保存路径,它给了我下一条消息:
System.InvalidOperationException:当应用程序未在 UserInteractive 模式下运行时显示模式对话框或表单不是有效操作。指定 ServiceNotification 或 DefaultDesktopOnly 样式以显示来自服务应用程序的通知。
可能有人知道是什么问题?
问题所在的dll代码:
public static void Run(SqlInt32 i)
{
FolderBrowserDialog fd = new FolderBrowserDialog();
fd.ShowDialog();
string save_pth = fd.SelectedPath+'\\';
if (gener_pdf(gener_jpg(i, save_pth), save_pth))
{
List<string> to_del = gener_jpg(i, save_pth);
for (int p = 0; p < to_del.Count(); p++) { File.Delete(to_del[p]);}
}
}
【问题讨论】:
-
我见过很少有像这个一样糟糕的想法(除了可能在事务中打开用户对话框......)。你做错了!
-
SQL Server 是一个服务器。大多数情况下,它将在 nobody 以交互方式登录的机器上运行。您希望谁会看到此对话框?
-
@Damien_The_Unbeliever 我认为 opendialog 显示本地目录,而不是来自服务器的 realtes
-
@MitchWheat 但我需要这样做
-
建议您在这里的尝试中被误导了,因为您确实将所有分层的概念都抛到了窗外。 SQL Server 本身没有任何 UI。它作为服务在后台运行。你的 UI 和数据库之间应该至少有几层。突然让 数据库 尝试显示一个对话框是错误的。
标签: c# sql-server dll opendialog