C# Process.Startinfo从ASP.NET打印Windows Server 2003中不工作的PDF

C# Process.Startinfo从ASP.NET打印Windows Server 2003中不工作的PDF,c#,asp.net,printing,C#,Asp.net,Printing,我在ASP.NET C#中有下面的代码,当我在调试模式下测试时,它在本地系统+生产机器中运行良好。但当我上传到IIS时,它不起作用 ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = Server.MapPath(filePath); startInfo.Verb = "print"; startInfo.

我在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();
                }
我试过的东西

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

  • WINNT>Microsoft.NET>Framework>v2.52something>Config>machine.Config
  • 我换了这个

    processModel autoConfig=“true”

    用这个

    processModel userName=“系统”password=“自动生成”

    我收到了这个信息

    “在执行与打印相关的任务之前,您需要安装 打印机“


    我正在使用acrobat 7,我可以从打印机本身和acrobat软件打印测试页。

    如果您的机器上安装了acrobat,则可以使用Verb。并将打印机名称作为参数传递

    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);
    

    问题可能是IIS在不同的用户下运行,该用户的权限低于典型用户。看


    通过将ProcessModel标识更改为具有权限的用户,我在服务器上修复了它。可能是一个变通办法和糟糕的做法,但它奏效了。{Application Pool}->Advanced Settings->Identity->Custom Account(同时将Load User Profile切换为true)

    您必须在生产机器上安装acrobat reader。。Windows必须检测到.pdf扩展名与acrobat reader关联。是的,我已经在生产机器中安装了它。实际上,我已经用我在问题中发布的旧代码在生产机器上打印了。帮助尝试使用“print”动词而不是“PrintTo”好的。。。尝试根据本文中给出的示例创建一个示例控制台应用程序,Hi thanks Shoaib,但正如我前面所述,它在调试模式下工作良好。因此,即使我创建了一个示例控制台应用程序,它也将在调试模式下工作。我认为这与IIS中的安全问题有关。救命啊!