试图监视已完成的事件时访问被拒绝
本文关键字:访问 拒绝 事件 监视 已完成 | 更新日期: 2023-09-27 18:27:58
我们目前正在将RightFax v9.3.2.89与rfcomlib API一起使用。目前,我们只是在每个人的计算机上安装了RightFax,因为生成这些传真的应用程序在桌面上。由于我们正在转向web解决方案,我们将只在服务器上安装RightFax。这样做的问题是用户将无法看到传真是否成功发送。看看API,我发现我可以做这样的事情:
faxServer.Events.WatchCompleteEvents = BoolType.True;
faxServer.OnCompleteEvent += faxServer_OnCompleteEvent;
问题是,当我订阅观看已完成的事件时,我会得到
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
浏览网页,我可以看到这个错误可能来自一百万个来源。这很奇怪,因为我在电脑上有管理权限。
有什么想法吗?
不幸的是,RightFax网站毫无用处,而且几乎没有可用的资源。
我注意到,当使用Ben的上述方法时,状态描述永远不会更新。下面的示例将永远休眠,显示"等待转换"状态,即使在FaxUtil中传真已明确发送并且状态为"OK"。
fax.Send();
while (fax.StatusDescription != "OK")
{
Console.WriteLine("Polling fax handle " + fax.Handle.ToString()
+ " for status. Found: " + fax.StatusDescription);
Thread.Sleep(5000);
}
我要强调的是,RightFax API没有文档,很难使用。我希望这对最初的海报有所帮助。
轮询传真。StatusDescription将使程序处于无限循环中。您需要做的是反复轮询有问题的传真对象。以下示例获取特定文件夹中的所有传真对象,确定所需的一个传真对象,并查询对象的StatusDescription。
string status = "";
string description = "";
int handle = fax.Handle; // this identifies the fax object you're polling for
while (status != "fsDoneOK") // keep polling fax object until status is "OK"
{
foreach (Fax obj_fax in obj_user.Folders["Main"].Faxes) // look in the "Main" folder for fax objects
{
if (handle == obj_fax.Handle) // check to see if this object is yours
{
status = obj_fax.FaxStatus.ToString();
description = obj_fax.StatusDescription;
System.Diagnostics.Debug.WriteLine("Fax Status: " + obj_fax.StatusDescription);
}
if (status == "fsDoneError" || status == "fsError") // check for fax error
break;
}
if (status == "fsDoneError" || status == "fsError") // check for fax error
break;
Thread.Sleep(3000); // sleep for 3 seconds and then poll again
}