我新建了一个ATL com组件然后添加上了activex server component,在这个东西上加了一个mytest()函数,
函数里就加了一句话m_piResponse->Write(_varaint_t(L"dfsd"));
然后我在网页里面调用这个函数,发现出错,后来我通过打log的方式看到这个指针是0。我看vckbase上的一篇文章http://www.vckbase.com/document/viewdoc/?id=1545中也是这样弄的啊,而且我这个还特别简单,
为什么会出错呢?关键是那个指针为0这个让我很费解,是不是有什么环境设置的原因啊,大家帮帮忙
函数里就加了一句话m_piResponse->Write(_varaint_t(L"dfsd"));
然后我在网页里面调用这个函数,发现出错,后来我通过打log的方式看到这个指针是0。我看vckbase上的一篇文章http://www.vckbase.com/document/viewdoc/?id=1545中也是这样弄的啊,而且我这个还特别简单,
为什么会出错呢?关键是那个指针为0这个让我很费解,是不是有什么环境设置的原因啊,大家帮帮忙
解决方案 »
- 对于gluPerspective,gluLookAt视角切换的不解等,请高手指点
- 跨对话框的函数调用
- vc中使用ADO如何取数据表的bit类型字段的数据?
- 急!VC编译结果:cannot open file '.\Debug\StdAfx.sbr':什么错啊?
- 求解将JPG等图像转换为AVI方法
- 关于vc中如何进行全屏显示的问题(50分)
- 乱码问题
- 我在服务器端开一个TCP侦听端口。用netstat观察,为什么有时会显示该侦听端口状态为ESTABLISHED?
- 为何CListCtrl :: GetNextItem(-1, LVNI_SELECTED)会返回 -1?
- a closed, proprietary database ;an open, nonproprietary database 这两个短语,如何翻译,又如何解释呢?
- 为什么增加延时后才能够得到期望的执行结果
- 关于ACE连接UDP的问题
vckbase这个例子,一端要放到http server上的,你部署http server了吗?如果要在本地使用, 那你的form.htm就需要另外写,(你是在本机开发的,控件一般已经注册了;为了保险起见你也可以使用 "regsvr32 path_to_your_ctrl.dll" 注册控件
我觉得是不是IIS上要设置权限什么的啊,不清楚啊
函数里就加了一句话m_piResponse->Write(_varaint_t(L"I was born on a mountain side!"));
然后编译注册DLL
下面是测试用的网页<%@LANGUAGE="JavaSCRIPT"%>
<%
function tt()
{
try
{
Response.Write("begin<br>");
var ob = new ActiveXObject("STPacsSC.pacsSC.1");
ob.testMethod(1);//这里如果加2个参数或更多都说参数个数不对,通过这我觉得控件注册,生成都没问题
delete ob;
}
catch(e)
{
Response.Write("error " + (e.number & 0xFFFF) );
Response.Write(" - " + e.description);
}
}
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY><P> </P><%
tt();%>
</BODY>
</HTML>我在个网页里面调的DLL中的函数,而且我的DLL中testMethod只有一个参数,在网页里如果写testmethod(1,2)等就会说参数个数不对,
所以我觉得,控件注册,生成都没问题,就是那个m_piResponse不知道为什么就是个0,
难道我要显式的调用vc6给我生成的onStartPage吗?
可是OnStartPage (IUnknown* pUnk) 中这个参数我不知道怎么搞啊,我对COM不了解,高手
Internet 信息服务技术信息(用于支持人员) * 错误类型:
Active Server Pages, ASP 0115 (0x80004005)
外部对象中发生了可捕获的错误(C0000005)。脚本无法继续执行。
/stsc/asp2.asp现在调用testMethod出这个错
我对JAVASCRIPT 不怎么熟悉.
用VB做了一个,测试OK
<%@LANGUAGE="vbscript"%><HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY><P> </P><%
Response.Write("begin<br>")
dim ob
set ob = Server.CreateObject("STPacsSC.pacsSC.1")//一定要加Server.否则会出错
ob.mytest()
set ob=nothing
%>
</BODY>
</HTML>
STDMETHODIMP CpacsSC::OnStartPage (IUnknown* pUnk)
{
if(!pUnk)
return E_POINTER; CComPtr<IScriptingContext> spContext;
HRESULT hr; // Get the IScriptingContext Interface
hr = pUnk->QueryInterface(IID_IScriptingContext, (void **)&spContext);
if(FAILED(hr))
return hr; // Get Request Object Pointer
hr = spContext->get_Request(&m_piRequest);
if(FAILED(hr))
{
spContext.Release();
return hr;
} // Get Response Object Pointer
hr = spContext->get_Response(&m_piResponse);
if(FAILED(hr))
{
m_piRequest.Release();
return hr;
}
// Get Server Object Pointer
hr = spContext->get_Server(&m_piServer);
if(FAILED(hr))
{
m_piRequest.Release();
m_piResponse.Release();
return hr;
}
// Get Session Object Pointer
hr = spContext->get_Session(&m_piSession);
if(FAILED(hr))
{
m_piRequest.Release();
m_piResponse.Release();
m_piServer.Release();
return hr;
} // Get Application Object Pointer
hr = spContext->get_Application(&m_piApplication);
if(FAILED(hr))
{
m_piRequest.Release();
m_piResponse.Release();
m_piServer.Release(); m_piSession.Release();
return hr;
}
m_bOnStartPageCalled = TRUE;
//CComVariant b=L"dfsd";
// m_piResponse->Write(b);
return S_OK;
}STDMETHODIMP CpacsSC::OnEndPage ()
{
m_bOnStartPageCalled = FALSE;
// Release all interfaces
m_piRequest.Release();
m_piResponse.Release();
m_piServer.Release();
m_piSession.Release();
m_piApplication.Release(); return S_OK;
}STDMETHODIMP CpacsSC::mytest()
{
// TODO: Add your implementation code here CComVariant b=L"dfsd";
m_piResponse->Write(b);
return S_OK;
}
在网页里用JS的话就会报错,代码见6楼
用VBSCRIPT就不会,狗日的MS大家引已为戒吧!