net-iis下调用外部程序出现内存不足错误。

问题描述

iis下调用外部程序出现内存不足错误。

因为需要在服务器端将ppt转换成其他格式,所以在iis下调用了编好的python。
在非服务器的环境下是可以正常使用的,但是iis下使用

using System.Diagnostics;
Process p = new Process();
... ...
的方式调用python脚本,执行到
python文件的:
import win32com
from win32com.client import Dispatch, constants
ppt = win32com.client.Dispatch('PowerPoint.Application')
try:
pptSel = ppt.Presentations.Open(file_name, ReadOnly=1, Untitled=0, WithWindow=1)
except Exception, e:
print e
print traceback.format_exc()
这里,python就会抛出错误:存储空间不足,无法完成此操作。
也想过使用.net环境下
using Microsoft.Office.Core;
using PPT = Microsoft.Office.Interop.PowerPoint;
... ...
persentation = application.Presentations.Open(sourcePath, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);
这样的方式,可是在iis上执行到这里也会报错误“内存不足无法继续此操作”的错误。
各位大神谁来告诉我到底是什么原因啊,我也好找针对错误原因的解决办法。

解决方案

[OutOfMemoryException: 没有足够的内存继续执行程序。]
Microsoft.Office.Interop.PowerPoint.Presentations.Open(String FileName, MsoTriState ReadOnly, MsoTriState Untitled, MsoTriState WithWindow) +0
AverageHandler.PPTConvertToIMG(String sourcePath, String targetPath) +126
AverageHandler.ProcessRequest(HttpContext context) +627
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +508
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +92

解决方案二:

[OutOfMemoryException: 没有足够的内存继续执行程序。]
Microsoft.Office.Interop.PowerPoint.Presentations.Open(String FileName, MsoTriState ReadOnly, MsoTriState Untitled, MsoTriState WithWindow) +0
AverageHandler.PPTConvertToIMG(String sourcePath, String targetPath) +126
AverageHandler.ProcessRequest(HttpContext context) +627
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +508
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +92

时间: 2024-12-01 08:57:00

net-iis下调用外部程序出现内存不足错误。的相关文章

系统调用-请大神推荐书籍:关于C++调用外部程序的书籍

问题描述 请大神推荐书籍:关于C++调用外部程序的书籍 现在我想用C++调用外部函数,应用程序,和系统程序 本人看的书不多,求有系统详细讲解这方面相关知识的书籍推荐,最好是基于Linux环境的,比如:调用系统安装的其它程序,我想系统地学习这方面的知识,求推荐书籍 请大神指教,谢谢啦 解决方案 本质上你说的其实是linux下常见的命令行.不同的linux发行版不同.比如rs系,一般通过yum安装,Ubuntu用apt-get.你可以看对应的Linux手册.<鸟哥的Linux私房菜>是一本比较经典

C#中利用process类调用外部程序以及执行dos命令

程序|执行 c#中的Process类可方便的调用外部程序,所以我们可以通过调用cmd.exe程序 加入参数 "/c " + 要执行的命令来执行一个dos命令(/c代表执行参数指定的命令后关闭cmd.exe /k参数则不关闭cmd.exe)  1         private string RunCmd(string command)     2         { 3             //實例一個Process類,啟動一個獨立進程 4             Process

VC调用外部程序接口

(1) system() 函数名: system 功 能: 发出一个DOS命令 用 法: int system (char *command); 备 注: system函数已经被收录在标准c库中,可以直接调用 返回值 =-1:出现错误 =0:调用成功但是没有出现子进程 >0:成功退出的子进程的id 样 例: system("D:\\game.exe"); system("mmc.exe \"c:\\windows\\system32\\gpedit.msc\&

同一IIS下一个网站访问另一个网站下的WebService,有什么方法?

问题描述 同一IIS下一个网站访问另一个网站下的WebService,有什么方法? 解决方案 解决方案二:看帖回复是一种美德...顶..解决方案三:有什么区别吗?webservice的作用就是跨域跨防火墙,同一IIS下不同网站之间的访问,跟普通情况有什么区别吗?解决方案四:没法访问,但挂在不同的iis下就可以解决方案五:从网站上访问webservice与访问另一个网站是一样的吧解决方案六:你可以试一下,在你iis下挂一个webServices,然后另一个网站引用它,将这两网站同时放在IIS下你试

iis webservice-求助:iis下的C# webservice部分请求不知道哪里卡住了,cpu很高,处理时间很长

问题描述 求助:iis下的C# webservice部分请求不知道哪里卡住了,cpu很高,处理时间很长 一个app的服务器端,使用的是C# webservice,部署在IIS下.service业务比较简单,基本就是操作另一个远程的数据库. 客户端反映调用service请求时,有时候会很久才返回(十几秒甚至几十秒,直到超时).查看iis的"工作进程",发现时不时会出现一些请求"经过的时间"很长,正常的请求只要毫秒级就能处理完,但是有些请求时间很不正常,如下图所示: 当

SqlServer调用外部程序实现数据同步

原文:SqlServer调用外部程序实现数据同步 首先创建两个数据库:SyncA是数据源,SyncB是对SyncA进行同步的数据库. 在SyncA和SyncB中分别创建Source表和Target表,实际业务中,两张表的结构大多不相同.     然后创建一个类库的项目:MySync(注意项目的版本,Sql08不支持的.net 4.0及更高版本) 下面是同步程序代码: using System; using System.Data; using System.Data.Sql; using Mic

ASP.NET是如何在IIS下工作的

原文:ASP.NET是如何在IIS下工作的 ASP.NET与IIS是紧密联系的,由于IIS6.0与IIS7.0的工作方式的不同,导致ASP.NET的工作原理也发生了相应的变化.   IIS6(IIS7的经典模式)与IIS7的集成模式的不同 IIS6的运行过程: 分析上图可知:     在 User Mode 下,http.sys 接收到 http request,然后它会根据 IIS 中的 Metabase 查看基于该 Request 的 Application 属于哪个 Application

scrollarea-QT中调用外部程序,输出显示的问题

问题描述 QT中调用外部程序,输出显示的问题 Linux下QT调用外部程序F,F运行的时间比较长,在运行过程中不断有输出,用scrollarea+label(或者什么textedit)来显示程序F的输出,用的是readAll(),程序运行过程中的输出可以看到,但是当F程序运行完毕的时候,只有最后一小部分的输出能够在区域里看到.滚动条都没有或者滚动条的区域很小,前面一部分的输出根本看不到了.. 求教.. 部分代码: out=new QTextEdit(); ui->scrollArea->set

c# process.start调用外部程序, 外部程序出错弹出了个对话框, c# 如何截获,停止弹对话

问题描述 c#process.start调用外部程序,外部程序出错弹出了个对话框,c#如何截获,停止弹对话框,并在c#内部处理.麻烦问下有会的么? 解决方案 解决方案二:这东西截获不了.解决方案三:试试先用FINDWINDOW找到它,然后发消息关了它.解决方案四:能捕获到线程吗??