试图监视已完成的事件时访问被拒绝

本文关键字:访问 拒绝 事件 监视 已完成 | 更新日期: 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
}