Web Service中连续调用dll的问题!

tswtq 2005-08-16 05:19:29
在我的Web Service中由于需要对视频进行控制,所有采用了DirectShow技术。
我通过一个dll的项目,完成对DirectShow的操作的封装,准备使用platform invoke让Web Service来驱动这个dll文件。
经过测试,在一个普通的.net应用程序中,我已经成功地通过.Net应用程序对该dll进行了调用,实现了一个启动,一个停止两步操作,反复测试没有发现异常。
但是当我把这部分移到Web Service上时,出现了奇怪的问题。

Web Service可以和先前的.net应用程序一样正常的调用dll文件,实现“启动”视频的动作,但是当我再次通过Web Service试图关闭视频的时候,Service就会出错,报告Server Application Unavailable,随后视频也停止了,查看事件只看到了
来源:ASP.NET 1.1.4322.
类别:无
类型:错误
事件ID:1000
描述:aspnet_wp.exe (PID: 3872) stopped unexpectedly.

目前没有发现更多的细节,部分代码如下
Web Service的声明:
public bool BeginCapture(string serverIP, int streamPort)
{
CreateVideoLine();
StartVideo(serverIP, streamPort);
return true;
}

public bool EndCapture()
{
StopVideo();
ReleaseVideoLine();
return true;
}

[DllImport("CaptureV.dll")]
private static extern int CreateVideoLine();

[DllImport("CaptureV.dll")]
private static extern int ReleaseVideoLine();

[DllImport("CaptureV.dll")]
private static extern int StartVideo(string ipAddress, int port);

[DllImport("CaptureV.dll")]
private static extern int StopVideo();

Dll部分的代码:
其中pRTPSender 和 pGraph在dll中定义为全局变量,不知道会不会有影响。
去掉了错误处理的代码。

BOOL StartVideo(const char* pIPAddress, int usPort)
{
INetworkConfig * pNetConfig;
hr = pRTPSender->QueryInterface(IID_INetworkConfig, (void**)&pNetConfig);
pNetConfig->AddDestAddress(inet_addr(pIPAddress), htons(usPort));
pNetConfig->Release();

IMediaControl *pControl;
hr = pGraph->QueryInterface(IID_IMediaControl, (void**)&pControl);
hr = pControl->Run();
pControl->Release();

return TRUE;
}

BOOL StopVideo(void)
{
if (pGraph == NULL)
{
return FALSE;
}

IMediaControl *pControl;
hr = pGraph->QueryInterface(IID_IMediaControl, (void**)&pControl);
OAFilterState state;
pControl->GetState(INFINITE, &state);
if (state == State_Running)
pControl->Stop();
pControl->Release();
pControl = NULL;

return TRUE;
}

希望大家能帮忙找找问题可能在什么地方。
...全文
222 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ms44 2005-09-05
  • 打赏
  • 举报
回复
应该是你的
pGraph
没有在stop Service()时保持,已经没有了。
athossmth 2005-09-05
  • 打赏
  • 举报
回复
webservice没有timer,你是怎么调用EndCapture的?
zhqi1112 2005-08-27
  • 打赏
  • 举报
回复
“WebService不是有状态的连接呀.不能这么操作呀”---- 是这么回事!
MyLf 2005-08-26
  • 打赏
  • 举报
回复
你用WebService 干这事?

改用Remoting吧
qqqdong 2005-08-24
  • 打赏
  • 举报
回复
WebService不是有状态的连接呀.不能这么操作呀
jamzh 2005-08-22
  • 打赏
  • 举报
回复
public bool EndCapture()
{
StopVideo();
ReleaseVideoLine();
return true;
}
在打开的时候有string serverIP参数,我想在关闭的时候也应该有吧,要不怎么知道关闭哪个?
zhilunchen 2005-08-20
  • 打赏
  • 举报
回复
顶的人都没有!顶一下!
NetDNASupport 2005-08-18
  • 打赏
  • 举报
回复
?

12,163

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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