服务器出现意外情况,急!

fairykengqiangmeigui 2009-12-30 04:18:38
请教各路大侠:
我的程序刚开始运行是没有问题的,可是当运行起来,大约一个多小时不给它响应(即不动那台电脑,也不给他鼠标响应)时,就会弹出对话框“sc1=80010105,runscript d read failed”(这是我自动设的弹出对话框),查了查80010105的情况是“服务器出现意外情况”,相关代码如下:
CoInitialize(NULL);
HRESULT hr=S_OK;
IGlobalInterfaceTable *piGIT=NULL;
hr = CoCreateInstance(CLSID_StdGlobalInterfaceTable, NULL,
CLSCTX_INPROC_SERVER,
IID_IGlobalInterfaceTable, (LPVOID*)&piGIT);
if(hr!=0)
AfxMessageBox("GlobalInterfaceTable CoCreateInstance in Runscript d failed");

IDispatch *piDispatch=NULL;
hr = piGIT->GetInterfaceFromGlobal(m_dwCookie, __uuidof(piDispatch),(void**)&piDispatch);
if(hr!=0)
AfxMessageBox("GlobalInterfaceFromGlobal in runscript d failed");

DISPID dispid;
OLECHAR* func=L"ReadRealData1";//调用的函数名
piDispatch->GetIDsOfNames(IID_NULL,&func,1,GetUserDefaultLCID(),&dispid);

VARIANT var;
VARIANT var1;

EXCEPINFO excepInfo;
UINT errArg;

VariantInit(&var);
VariantInit(&var1);
DISPPARAMS DispParams;

DispParams.cArgs = 1;//表示参数的计数
DispParams.cNamedArgs = 0;//表示命名参数的计数
DispParams.rgdispidNamedArgs = NULL;//表示命名参数的调度 ID
VARIANTARG* pArg=new VARIANTARG[DispParams.cArgs];
DispParams.rgvarg=pArg;//表示对参数数组的引用
memset(pArg,0,sizeof(VARIANT)*DispParams.cArgs);

DispParams.rgvarg[0].vt=VT_VARIANT|VT_BYREF;
DispParams.rgvarg[0].pvarVal=&var;

var1.vt = VT_I4;
SCODE sc;//SCODE 类型等效于 HRESULT
try
{
sc=piDispatch->Invoke(dispid,IID_NULL,0,DISPATCH_METHOD,&DispParams,&var1,&excepInfo,&errArg);
CString strsc;
strsc.Format("sc1=%0x,runscript d read failed",sc);
if(sc!=0)
AfxMessageBox(strsc); //ysm 091229 change
}
请问各路大侠:出现这种问题的原因是什么?传递的参数不对吗?还是我的com接口的问题?还是计算机设置的问题?请问如何解决!
...全文
808 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
guitao861011 2010-01-04
  • 打赏
  • 举报
回复

  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lonelyhacker 的回复:]
try
{
sc=piDispatch->Invoke(dispid,IID_NULL,0,DISPATCH_METHOD,&DispParams,&var1,&excepInfo,&errArg);
CString strsc;
strsc.Format("sc1=%0x,runscript d read failed",sc);
if(sc!=0)
AfxMessageBox(strsc);      //ysm 091229 change
}

查一下你的sc是什么东东吧。是什么类型的,是指针还是什么东东。。在使用完之后把它delete掉看看。
[/Quote]
查过了,sc1=80010105,服务器出现意外情况
lonelyhacker 2009-12-31
  • 打赏
  • 举报
回复
try
{
sc=piDispatch->Invoke(dispid,IID_NULL,0,DISPATCH_METHOD,&DispParams,&var1,&excepInfo,&errArg);
CString strsc;
strsc.Format("sc1=%0x,runscript d read failed",sc);
if(sc!=0)
AfxMessageBox(strsc); //ysm 091229 change
}

查一下你的sc是什么东东吧。是什么类型的,是指针还是什么东东。。在使用完之后把它delete掉看看。
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 vann1982 的回复:]
内存泄漏?
[/Quote]
哎呀,那就更玄乎了,程序也不是我编的,我只是在维护,天呢,这可从何做起
vann1982 2009-12-31
  • 打赏
  • 举报
回复
内存泄漏?
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 oyljerry 的回复:]
是不是计算机休眠等,引起程序不能正确执行
[/Quote]
我不懂啊,不过我觉得应该是程序的问题~
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ninetyfive 的回复:]
不太懂,按楼上说的,在电源管理中,将系统待机设置为从不,试试
[/Quote]
试过了,不行~
不动如岳 2009-12-30
  • 打赏
  • 举报
回复
不太懂,按楼上说的,在电源管理中,将系统待机设置为从不,试试
oyljerry 2009-12-30
  • 打赏
  • 举报
回复
是不是计算机休眠等,引起程序不能正确执行
  • 打赏
  • 举报
回复
怎么没人搭理我啊?再不顶就沉了!
周一又是新的开始!所有事情都按照往常的节奏按部就班,有条不紊的进行着。首先是检查下各网站及应用系统是否正常,然后看看日志信息是否也有异样,一圈下来结果跟以前差一样没有其它问题。   今天唯独没有像往一样,上线之后并没打开系统监控(平时都是用SecureCRT登录系统之后,打开TOP命令让它一直在线,偶尔看下)。到了早上10点多快11点的时候,随手又点击了一下网站,这下出现的画面让我为之一醒(不是一惊)   所 实话这个介面还真不多见,但跟这个相似的就是前后端连接超时也会出现一个提示页面,但内容不太一样。这下我就了,难道被人黑了?因为最近老有朋友说他的 网站被挂马了,所以我一个冲上来的念头就是被人黑了。连忙SSH登录后台看看,最后的登录IP也是自己的,这才稍有点放心,是自己紧张过头了。   稍作冷静之后,再结合提示页面的信息,应该是系统服务出了问题而非被入侵造成。于是就从检查日志、进程、端口等方面着手展开排查,很快就在php-fpm.log日志文件有所发现   突然似乎想到了什 么,要检查下PID文件,因为在Linux下记录某个进程是否运行是通过生成一个对应的PID文件,写入当前的进程号作标识的。真是喜出望外呀~这个 pid文件是空的,虽然有这个名称的文件,但里边没有内容。所以就解释了为什么启动服务就说已经运行,停止它的时候说失败了。几经检查,发现用来启动 php-fpm的脚本写得不严密,只是在启动的时候检查是否有pid文件存在而不管它是否有真实的PID内容,才造成了启动、停止都不正常。
正常iis5.1安装方法(适用于XP): 第一、先下载IIS5.1压缩包 第二、下载好后,记住你下载的物理路径,最好是直接下载到你的根目录下,比方说直接下载到F盘。不要下载到文件夹里。 第三、IIS5.1是个压缩文件,我们就把它解压到当前文件夹。 第四、打开-开始-控制面板-添加/删除程序-添加删除Windows组件-在Internet信息服务上画对勾(同时还要将详细信息中的方框全部打上勾) 点下一步,这时弹出一个对话框,点确定,弹出以下对话框,点浏览,找到II5.1,点确定,这时电脑开始安装IIS、可是它只安装到现两三格的时候就停下来不安了,因为找不到文件了。你不用害怕,我们继续点浏览,把放文件的地方找出来,比方说F盘,然后电脑继续安装,点打开,点确定,这样的情况大概持续四次,真到安上为止,点完成,这时IIS5.1就真正安到你的电脑里了。 另外还有一种方法是使用光盘,在你安装系统的时候,当然我说的是XP系统,安装完成后,不要取出光盘,打开-开始-控制面板-添加/删除程序-添加删除Windows组件-在Internet信息服务上画对勾{就是将它勾选上},直接安装,很容易就把IIS安上了。不过前提是你的光盘一直不要取出。 最新iis安装问题及解决方法 在安装时遇到的问题 1.iis6.0和5.0都不能装在XP系统中 2.下载了iis5.1后不知道怎么安装 3.安装过程中弹出文件无法复制的对话框和什么系统被修改,是否继续的对话框,很是郁闷 4.安装后internet信息服务器中没有默认网站 5.安装后在地址栏中输入http://localhost/出现Server Application Error 错误即500 错误 6.安装后默认网站无法启动 再说说这些问题的解决方法 问题一:1 在你装IIS之前需要知道你的系统是什么样的,HOME版的好想不能装,可好象网上也有装的方法,我们用过HOME版的,也就没试过,如果你是HOME版的可以去试试。如果你的系统是家庭版的,那就应该知道windows 98 只能装pws4.0;windows 2000 ---iis5.0;windows 2003---iis6.0;windows xp---iis5.1.如果你不是用系统盘安装,那就去网上下载你要装的IIS吧! 问题二:我的系统是xp的,所以我装的是5.1。下载后解压缩放在你硬盘的任何位置。然后开始/设置/控制面板/[添加/删除程序]/[添加/删除windows组建],然后在windows 组件向导中的internet 信息服务旁边的方框里打上勾,(注意:先别按下一步,点击详细信息看看里面的那些方框是不是都打上勾了,如果没有,要全选上,不然会出现问题4)。现在你按下一步,要求你插入光盘,没有盘,点击浏览,选择IIS存放的路径,然后确定,这里也许你就出现问题3了,如果没出现你很幸运! 问题三:如果安装时找不到文件,或文件无法复制,知道是什么原因吗?是windons自带游戏惹的祸。回到Windows组件向导,找到附件和工具,在其详细信息中去掉“游戏”的对勾(不然找不到zClientm.exe)。重新安装,是不是找到了?呵呵,这时会一边边的弹出个对话框让你重新选择路径,那就再选一次,不过要注意路径后面好象多了个i386,把它取了,确定。在这里也许会弹出说你的系统不修改的对话框,直接取消,这时你可以歇一下了,可能你已经安装成功了,不过不要太高兴,如果你没遇到后面的问题,你有点幸运! 问题四:如果看不到默认网站,那再打开[添加/删除windows组建]中的internet 信息服务,详细信息里面的勾全打上了,如果没有,重装吧! 问题五:出现这个问题也不知道什么原因,不知道你出现了没有,解决方法是:开始”->“设置”->“控制面板”->“管理工具”->“组件服务”中,“控制台根目录”->“组件服务”->“计算机”->“我的电脑”->“COM+应用程序”中,有一个“IIS Out-Of-Process Pooled”鼠标右键“属性”--“标识”--把“此用户”调整为“交互式用户--目前已登录的用户”。然后“确定”,再鼠标右键“属性”--“启动”。这里还有个问题就是找不到“IIS Out-Of-Process Pooled”,那里面根本没有!怎么 办?别!开始/运行,输入msdtc -resetlog,确定。然后打开开始/设置/控制面板/信息管理/服务,找到Distributed Transaction Coordinator,启动它。现在你又要重装IIS了,现在你应该能看到IIS Out-Of-Process Pooled了,高兴吧! 问题六:好不容易装上来,可地址栏中输入http://localhost/又是网页无法显示,郁闷坏了!细心一看,默认网站没有启动,右键启动提示“服务器并未及时响应启动或控制请求”在网上查了下说是World Wide Web Publishing Services有问题,找到它果然它没启动,可启动它出现错误,启动不了,怎么办?再查吧,又说是要删个更新文件,最后还是弄出来了,正确方法是这样的:开始/设置/控制面板/[添加/删除程序],最上面有个“显示更新文件”打上勾,在里面找到KB939373,删除它。然后开始/设置/控制面板/管理工具/服务,找到World Wide Web Publishing Services,启动它,并将启动方式改为自动,再回到默认网站启动,看看,是不是能启动了,这时终于看到结果了。我的就是这样装上的,一波三折啊,呵呵祝你好运! 如果是XPHome版 首先在“开始”菜单的“运行”中输入“c:\Windows\inf\sysoc.inf”,系统会自动使用记事本打开sysoc.inf这个文件。在sysoc.inf中找到“[Components]”这一段,因为是XP简化版,所以里面东西很少,在里面加上这段:“iis=iis2.dll,OcEntry,iis2.inf,,7”。之后保存并关闭。 因为是XP简化版,所以在下载的安装文件里也一定没有IIS的安装文件了。你可以从本站点击下载IIS安装文件。下载完后,解压到任意盘符的根目录下(最好是根目录,便于后面打命令)。比如我把压缩包解压到了D盘根目录下。 接下来,在运行中输入“CMD”然后回车,打开命令行模式,在命令行下输入下列的两条命令,在每一行命令结束后回车(假设光驱是D盘): EXPand d:\iis51\iis.dl_ c:\Windows\system32\setup\iis2.dll EXPand d:\iis51\iis.in_ c:\Windows\inf\iis2.inf 注意如果你解压到了F盘就把上面的D改为F就可以了,其他同理。这时候,你打开控制面板->添加/删除Windows组件,就会发现,Internet信息服务(IIS)的安装选项已经出现在安装列表里了。 之后的事情,就和平常安装IIS一样了,只不过,在安装的过程中会出现找不到文件的情况(这是正常的,因为你的IIS安装目录没在XP默认的目录下)。这时,你点吉浏览,选择你刚刚解压的目录就可以了,这种让你选择安装文件的现象共会出现3次,每次的目录都按上面说的步骤即可。 不出意外,过一会,IIS就安装完成了,点击“完成”。但做到这一步还不算完。需要对IIS进行一些设置: 从管理工具里打开“Internet服务管理器” 然后点“默认WEB站点”的右键,转到“目录安全性”选项卡,点“匿名访问和验证控制”的“编辑”按钮,回弹出匿名方法新窗口,再点击其中“匿名访问”中的“编辑”按钮,将“允许IIS控制密码”全面的勾去掉,然后一路确定返回就可以了。至此XP简化版安装IIS5.1的步骤就全部完成了。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧