ADVANTECH_CYZ 2022-08-28 14:49 采纳率: 50%
浏览 34
已结题

C#调用Python程序,VS里面可以运行,IIS发布报错

         实现功能:网页点击按钮后,后端触发exe文件,exe文件是用python编写,功能是把word文档转换为pdf文档。VS里面能正常运行,而在IIS里面浏览网页访问时,发生异常。网上找了办法,说是没有足够权限,我也都在应用池中设置了Local Service或administrator权限,MIME类型也有doc,exe,pdf 类型。

IIS里浏览,发现能触发exe文件,能遍历到文件夹的word文件,但是打开并转换pdf时,报:AttributeError: 'NoneType' object has no attribute 'ExportAsFixedFormat' [12296]
 

C#的调用程序:

  Process p = new Process();
            string output = "";
            try
            {
                string pyexePath = System.Web.HttpContext.Current.Server.MapPath("~/Attachment/Temp/") + "ReWorkFilesToPDF.exe";
                p.StartInfo.FileName = pyexePath;
                p.StartInfo.WorkingDirectory = Path.GetDirectoryName(pyexePath);// 来获取exe的工作路径:
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardError = true;
                p.StartInfo.CreateNoWindow = true;
                p.Start();//启动进程
               output = pyexePath+"OutPut:" + p.StandardOutput.ReadToEnd();
                while (!p.HasExited)
                {
                    p.WaitForExit(1000);
                }
                string errormsg = p.StandardError.ReadToEnd();
                output = output + " error:" + errormsg;
                p.StandardError.Close();
                if (string.IsNullOrEmpty(errormsg))
                {
                }
                else
                {
                    throw new Exception(output);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                p.Close();
                p.Dispose();
            }
            p.Close();

------------------------------------------------------------------------------------------------------

python 程序:

import os
from win32com.client import Dispatch, constants, gencache, DispatchEx

def doc(self, filename):
    '''
    doc 和 docx 文件转换
    '''
    name = os.path.basename(filename).split('.')[0] + '.pdf'
    exportfile = os.path.join(self._export_folder, name)
    print('保存 PDF 文件:', exportfile)
    gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}', 0, 8, 4)
    w = Dispatch("Word.Application")
    doc = w.Documents.Open(filename)
    doc.ExportAsFixedFormat(exportfile, constants.wdExportFormatPDF,
                            Item=constants.wdExportDocumentWithMarkup,
                            CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
    w.Quit(constants.wdDoNotSaveChanges)
  • 写回答

2条回答 默认 最新

  • 快乐小土狗 2022-08-28 15:36
    关注

    doc是空值,你打印w.Documents.Open(filename)返回的是啥

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月6日
  • 已采纳回答 8月29日
  • 创建了问题 8月28日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来