访问被拒绝尝试观看已完成的事件

时间:2012-03-14 13:56:36

标签: c# com access-denied rightfax

我们目前正在使用带有rfcomlib API的RightFax v9.3.2.89。目前,我们只是在每个人的计算机上安装RightFax,因为生成这些传真的应用程序在桌面上。由于我们正在转向Web解决方案,因此我们只会在服务器上安装RightFax。问题是用户将无法看到传真是否成功发送。看看API我发现我可以这样做:

faxServer.Events.WatchCompleteEvents = BoolType.True;
faxServer.OnCompleteEvent += faxServer_OnCompleteEvent;

问题在于,当我订阅观看完成的事件时,我得到了

Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

浏览网页我可以看到这个错误可能来自一百万个来源。这很奇怪,因为我的电脑上有管理权限。

有什么想法吗?

不幸的是,RightFax网站没用,而且几乎没有可用的资源。

2 个答案:

答案 0 :(得分:3)

我注意到当使用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没有文档,很难处理。我希望这有助于原始海报。

答案 1 :(得分:0)

轮询传真.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
}