C# Process.Startinfo从ASP.NET打印Windows Server 2003中不工作的PDF
我在ASP.NET C#中有下面的代码,当我在调试模式下测试时,它在本地系统+生产机器中运行良好。但当我上传到IIS时,它不起作用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.
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();
}
我试过的东西
我正在使用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中的安全问题有关。救命啊!