在Windows Server 2003中从ASP.NET打印PDF的进程.Startinfo不起作用

bn31dyow  于 2022-12-05  发布在  .NET
关注(0)|答案(2)|浏览(133)

我有下面的代码在ASP.NET的C#和它的工作正常的本地系统+生产机器时,我在调试模式测试。但它不工作时,我上传到IIS。

ProcessStartInfo startInfo = new ProcessStartInfo();
                startInfo.FileName = Server.MapPath(filePath);
                startInfo.Verb = "print";
                startInfo.Arguments = "Printer Name";
                Process proc = new Process();
                proc.StartInfo = startInfo;
                proc.Start();

                proc.WaitForExit(5000);
                if (proc.HasExited == false)
                {
                    proc.Kill();
                }

我试过的东西。
1.控制面板〉管理服务〉服务〉IIS管理服务〉登录选项卡〉检查与桌面交互。重置IIS管理和IIS。
1.打印机属性〉安全〉大ASPNET,网络服务,每个人都可以完全访问。
1.试图将另一台打印机设置为默认打印机。请重新安装/添加打印机。
我尝试了以上所有的都没有成功。最后我在我的machine. config中尝试了下面的。

  1. WINNT〉Microsoft.NET〉框架〉v2.52something〉配置〉计算机配置
    我换了这个
    进程模型自动配置=“true”
    用这个
    进程模型用户名=“SYSTEM”密码=“自动生成”
    我收到了这个消息
    “在您可以执行与打印相关的工作之前,您必须先安装打印机”
    我正在使用acrobat 7,我可以从打印机本身和acrobat软件打印测试页。
kgsdhlau

kgsdhlau1#

你可以使用动词如果acrobat是安装在你的机器上.和传递打印机名称作为参数

var fileName = @"c:\pdf\file.pdf";
            var startInfo = new ProcessStartInfo(fileName);
            string verbToUse = "PrintTo";
            startInfo.Verb = verbToUse;
            startInfo.Arguments = "PrinterName";
            Process p = Process.Start(startInfo);
qlzsbp2j

qlzsbp2j2#

问题可能是IIS在其他用户下运行,该用户的权限比典型用户少。请参阅System.Diagnostics.Process.Start not work from an IIS
我通过将ProcessModel标识更改为具有权限的用户,在我的服务器上修复了该问题。这可能是一种变通方法和不好的做法,但它起作用了。{应用程序池} -〉高级设置-〉标识-〉自定义帐户(同时将加载用户配置文件切换为true)

相关问题