Почему всегда возвращать 0, когда получить PID в C# с IIS? Но работать с ASP.NET Develop Server нормально
Почему всегда возвращать 0, когда получить PID в C# с IIS? Но работать с ASP.NET Develop Server нормально.
КОД:
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
namespace MyWeb
{
public class SWFManager
{
[DllImport("User32.dll", CharSet = CharSet.Auto)]
private static extern int GetWindowThreadProcessId(IntPtr hwnd, out int pid);
public static void Excel2Pdf(string sourcePath, string targetPath)
{
XlFixedFormatType targetType = XlFixedFormatType.xlTypePDF;
object missing = Type.Missing;
ApplicationClass application = null;
Workbook workBook = null;
int pid = 0;
try
{
application = new ApplicationClass();
object target = targetPath;
object type = targetType;
workBook = application.Workbooks.Open(sourcePath);
workBook.ExportAsFixedFormat(targetType, target, XlFixedFormatQuality.xlQualityStandard, true, false);
IntPtr ip = new IntPtr(application.Hwnd);
GetWindowThreadProcessId(ip, out pid);
//pid return 0 if run with IIS except ASP.NET Develop Server
System.IO.File.AppendAllText(@"D:\WebRoot\pid.txt", pid.ToString());
}
catch
{
}
finally
{
Process p = Process.GetProcessById(pid);
p.Kill();
}
}
}
}
Призываю доброжелателей помочь объяснить или дать код решения, спасибо!