我正在做MVC ASP.NET网站,我必须整合FedEx运费。 我必须在流程结束时打开PDF,这是在发货过程中创建的。但它没有在网站服务器上打开。它在当地完美运作。我的代码如下。请帮帮我
private static void SaveLabel(string labelFileName, byte[] labelBuffer)
{
// Save label buffer to file
FileStream LabelFile = new FileStream(labelFileName, FileMode.Create);
LabelFile.Write(labelBuffer, 0, labelBuffer.Length);
LabelFile.Close();
// Display label in Acrobat
DisplayLabel(labelFileName);
}
private static void DisplayLabel(string labelFileName)
{
System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo(labelFileName);
info.UseShellExecute = true;`enter code here`
info.Verb = "open";
System.Diagnostics.Process.Start(info);
}
答案 0 :(得分:0)
它现在可以在网站上使用。 System.Diagnostics.Process.Start用于在系统上运行特定程序。您正在服务器上运行程序,因此文件将在服务器上打开,而不是在浏览器上打开。 在浏览器中打开pdf文件的错误方法。
正确的方法是返回操作类型为File或FileStreamResult:
public FileStreamResult PDFGenerator()
{
///byte[] labelBuffer generate the buffer from pdf
MemoryStream ms = new MemoryStream();
ms.Write(labelBuffer, 0, labelBuffer.Length);
ms.Position = 0;
return new FileStreamResult(ms, "application/pdf");
}