我们目前正在使用带有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网站没用,而且几乎没有可用的资源。
答案 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
}