我有一个棘手的问题,希望有人能帮助我(这对我来说真的很重要)。
如果有人在网站上执行了某个操作,我的网站应该通过 Lync 客户端自动进行呼叫。因此,会调用一个批处理文件,该批处理文件会使用参数调用我的程序。
这听起来像是 stackoverflow 的编码问题,但在我的 PC 上,甚至在手动调用我的程序时,一切都运行正常。问题出现在我的 mvc 网站调用程序时,尤其是这个函数,LyncClient.GetClient();
我收到一个异常“主机进程未运行”。在我的笔记本上,在 VS2012 中进行调试时,通过网站调用该工具是可行的。我知道该进程正在运行,因为我可以通过任务管理器关闭它,当我再次运行它时,它会通过我的程序调用。此功能LyncClient.GetClient();
是内置的。
有什么想法吗?我猜这一定与网站用户有关,他们可能没有足够的权限访问 lync 客户端。
答案1
我不是程序员@yourmother,但看起来如果你得到“主机进程未运行”,那么试图调用 Lync 客户端的任何东西都没有在与调用应用程序/程序相同的上下文中运行。
环顾四周,情况似乎确实如此: http://social.msdn.microsoft.com/Forums/en-US/communicatorsdk/thread/582cab2e-d51a-4bfe-b4cc-1eed92411754/
问题在于 Lync 客户端在该工作站上下文中的用户桌面上运行。您的 ASP.NET 应用程序在 IIS 进程下的单独工作站上下文中运行,无法访问在用户上下文中运行的 Lync 客户端。
您无法在 IIS 中修复此问题。如果您能告诉我们您要完成的任务,那么我们或许可以建议另一种方法。
他们建议的解决方法是使用此处的 UCMA API:http://www.microsoft.com/download/en/details.aspx?id=10566或者可以使用此处的 SDK:http://www.microsoft.com/en-us/download/details.aspx?id=18898
这有帮助吗?出于格式方面的考虑,我不希望这成为一条评论,但如果没有帮助或者您已经知道这一点,我会将其删除...
答案2
对我来说,解决方案是让我的工具以“管理员”帐户运行。我必须更改自动登录的注册表设置。如果通话应该开始,我只需创建一个文件,如果通话应该停止,我就会删除它。该工具每隔几秒检查一次该文件是否存在,并且只有在该文件存在的情况下才会进行 Lync 通话。
我知道这不是最好的方法,但它可以满足我的最后期限。MS 与所有 Lync SDK 以及不同的 Lync Client/Lync Server 版本和 Visual Studio 版本存在一些兼容性问题。