BizTalk 管理データベースでログイン失敗の例外が発生しますが、ConnectionString が機能し、ユーザーに権限があることが証明されています (テストに sa を使用しているため)。Web Api を経由する場合は機能しますが、Windows サービスを経由する場合は機能しません。
私が得る例外は次のようになります:
ログインで要求されたデータベース "BizTalkContextMgmtDb" を開けません。ログインに失敗しました。ユーザー「sa」のログインに失敗しました。- System.Data.SqlClient.SqlException
Windows サービスのアプリ構成で、asp.net WebApi の Web 構成と同じ接続文字列を使用します。
私が使用する接続文字列は次のようになります。
<add name="BizTalkContext" connectionString="Server=ServerName;Database=BizTalkMgmtDb;User ID=sa;Password=******;" />
接続するコードは、BizTalk と通信するためのクラス ライブラリにあり、ConnectionString は次のように設定されます。
private static string Connectionstring =
ConfigurationManager.ConnectionStrings["BizTalkContext"].ConnectionString;
ここで奇妙なのは、このクラス ライブラリのメソッドを Web API 内から実行しようとすると、すべて正常に動作することです。Windows サービス内からクラス ライブラリのメソッドを実行しようとすると、示された例外がスローされます。
両方のプロジェクトで同じ手法と同じライブラリを使用しているため、ここで問題になる可能性があるのは何ですか。
編集
Rick van Bodegravenは、接続文字列に以下を追加することを提案しました。"Trusted_Connection=False;暗号化=True;"
これにより、新しい例外が発生しました。
サーバーとの接続は正常に確立されましたが、ログイン プロセス中にエラーが発生しました。(プロバイダー: SSL プロバイダー、エラー: 0 - 信頼されていない機関によって証明書チェーンが発行されました。) - System.Data.SqlClient.SqlException