当前位置:编程学习 > C#/ASP.NET >>

asp.net C# 调用OCX 报错:“灾难性故障 (异常来自 HRESULT:0x8000FFFF (E_UNEXPECTED))”

asp.net C# 调用OCX 报错:“灾难性故障 (异常来自 HRESULT:0x8000FFFF (E_UNEXPECTED))”

环境:VS2005 C#
前提:控件已注册过了,也已在WinForm中调用成功了。
      在WinForm中可以将此控件添加到工具箱里,但在WebForm虽然我在“COM组件”将此控件选上了,可是控件箱里并没有看到此控件,同时我也引用了这个控件。

OXC 对象可以调用,但却调用不了ocx的方法.

CS文件里:声明对象是没有问题的,可是一调用对象的方法“GxMonitor.GxInitClient”就报上面提到的错误。
    using GXMONITORCLib;
    GxMonitorC GxMonitor = new GxMonitorC();

    protected void Button1_Click(object sender, EventArgs e)
    {
        //try
        //{
            if (!GxMonitor.GxInitClient("192.168.0.158", 10001, 10002))
            {
                ShowMsg("启动监听失败!");
                return;
            }
        // }
        //catch (Exception ex)
        //{
        //    ShowMsg(ex.Message);
        //}

    }





具体错误信息如下:


用户代码未处理 System.Runtime.InteropServices.COMException
  Message="灾难性故障 (异常来自 HRESULT:0x8000FFFF (E_UNEXPECTED))"
  Source="mscorlib"
  ErrorCode=-2147418113
  StackTrace:
       在 System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
       在 GXMONITORCLib.GxMonitorCClass.GxInitClient(String pIp, Int32 uConPort, Int32 uUdpPort)
       在 _Default.Button1_Click(Object sender, EventArgs e) 位置 c:\ttttt\WebSite2\Default.aspx.cs:行号 35
       在 System.Web.UI.WebControls.Button.OnClick(EventArgs e)
       在 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
       在 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


--------------------编程问答-------------------- 另外在aspx文件里我也加上了“<object id="GxMonitor" width="50" height="20" classid="CLSID:E8362CFF-EA1C-4D0E-B280-949F7103EE05"> 
        </object><br />”
运行时,也看到这个控件了。




--------------------编程问答-------------------- 前台JS直接调用吧,后台代码调用,一般都是提示灾难性故障,呵呵。
具体原因不晓得是不是OCX只能单线程下运行的原因。 --------------------编程问答-------------------- 当然你用WINFORM调用肯定没有问题 --------------------编程问答-------------------- GOOD --------------------编程问答--------------------
引用 1 楼 kenny9931 的回复:
另外在aspx文件里我也加上了“<object id="GxMonitor" width="50" height="20" classid="CLSID:E8362CFF-EA1C-4D0E-B280-949F7103EE05"> 
  </object><br />”
运行时,也看到这个控件了。



能列举个例子吗?没有弄过JS --------------------编程问答-------------------- 前提:控件已注册过了,也已在WinForm中调用成功了。

但在WebForm虽然我在“COM组件”将此控件选上了,可是控件箱里并没有看到此控件,同时我也引用了这个控件。


请楼主严格区分WinForm控件与WebForm控件,二者的基制是完全不相同的。
不能将WinForm的控件用于WebForm --------------------编程问答-------------------- 楼主您好,请问如何在客户端调用cox,我做了一个ocx,需要在客户端运行,一运行就提示灾难性故障 --------------------编程问答-------------------- asp.net最好是在JS里面调用,要嘛就嵌在页面中,后台不好调用的! --------------------编程问答-------------------- 学习,帮顶 --------------------编程问答-------------------- <object id="BabyOnline" name="BabyOnline" classid="clsid:Fdsf05-2fdD7-4ddd-Bddd-98dddd43D2F"
            style="width: 352px; height: 288px;"  class="style1">
</object>
<script  type="text/javascript">
<!--
var lResult = 1;

//初始化OCx控件
lResult = BabyOnline.CreateInstance();
if(lResult != 0){
alert("初始化失败");
}


function GetList(){
lResult = BabyOnline.GetList();

if (lResult == "" ){
resultMSG = "no";
}else{
resultMSG = "Yes";

}
}
} --------------------编程问答-------------------- 遇到了一样的问题,
  天啊要死了都,
后台调用说灾难性故障,
前台用说对象未定义。。。。。 --------------------编程问答-------------------- 楼主,你这问题解决了不
 我遇到相同问题
http://topic.csdn.net/u/20110907/14/1a46efbc-a0cc-453d-b990-31d826e64b05.html
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,