0

我有一个程序集 DLL,可让我连接到 ActiveMQ 代理。使用 NUnit 中的 DLL 工作正常,从控制台应用程序使用它也工作正常。问题是从 Windows 服务中使用它。与代理的连接总是失败,就好像服务没有可用的外部连接一样。即使绕过 SCM 并在 Visual Studio 中运行代码也会失败。Windows 服务项目需要做些什么才能获得外部连接吗?

DLL 中的失败代码是这样的:

ConnectionFactory connectionFactory = new ConnectionFactory(connectURI);
connection = connectionFactory.CreateConnection(); // fails here

connectURI 很好,因为它可以在控制台应用程序和测试中使用。

4

1 回答 1

1

主要区别在于控制台应用程序和 NUnit 以登录用户身份运行。Windows 服务以您将其配置为运行的任何方式运行。

尝试将服务配置为作为您的帐户运行,看看它是否有效。确保它没有作为网络服务或本地服务运行。

它运行的帐户可能需要用户配置文件(之前已登录),尤其是在使用代理服务器时。

尝试运行fiddlernetmon以查看尝试的连接中发生了什么。此外,尝试围绕连接尝试添加一些日志记录和跟踪 - 异常堆栈应该有更多详细信息。

从评论中编辑:还可以尝试添加 .net Web 客户端连接代码,这样可以更好地了解存在的任何连接问题。显然,NMS 正在掩盖和吞噬根本问题。

编辑:对于寻找解决方案的其他人(不阅读所有评论),添加 .web 客户端代码暴露了作为配置文件问题的根本问题。

于 2012-07-04T12:17:22.117 回答