0

ActiveMQブローカーに接続できるアセンブリDLLがあります。NUnitからのDLLの使用は正常に機能し、コンソールアプリからの使用も正常に機能します。問題は、Windowsサービスから使用することです。サービスで利用できる外部接続がないかのように、ブローカーへの接続は常に失敗します。SCMをバイパスして、VisualStudioでコードを実行しても失敗します。外部接続を取得するためにWindowsサービスプロジェクトが行う必要のある特別なことはありますか?

DLLで失敗するコードは次のとおりです。

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

connectURIは、コンソールアプリとテストで機能するため、問題ありません。

4

1 に答える 1

1

主な違いはコンソールアプリであり、NUnitはログオンしたユーザーとして実行されています。Windowsサービスは、実行するように構成したものと同じように実行されます。

アカウントとして実行するようにサービスを構成してみて、機能するかどうかを確認してください。ネットワークサービスまたはローカルサービスとして実行されていないことを確認してください。

特にプロキシサーバーを使用している場合は、実行中のアカウントにユーザープロファイル(以前にログオンしたことがある)が必要になる場合があります。

fiddlerまたはnetmonを実行して、試行された接続で何が起こっているかを確認してください。また、接続の試行の前後にログとトレースを追加してみてください。例外スタックに詳細が含まれている必要があります。

コメントからの編集:接続の問題が何であれ、より良い洞察を与える.netWebクライアント接続コードを追加してみてください。明らかに、NMSは根本的な問題を覆い隠して飲み込んでいます。

編集:(すべてのコメントを読まずに)解決策を探している他の人のために、.webクライアントコードを追加すると、構成ファイルの問題である根本的な問題が明らかになりました。

于 2012-07-04T12:17:22.117 に答える