複雑な問題があり、何が原因かわかりません。要するに、私は必要なものをほとんどテストするためのアクセス権を持っていますが、私のシナリオでデータベース接続文字列の問題をトラブルシューティングするための最良の方法がわかりません。
私の開発環境は、テスト環境とはかなり異なります。私のテスト環境はDMZにあります。私の開発環境は、データベースサーバーと同じドメイン内にあります。
私の開発環境では、デスクトップで実行し、接続文字列で接続し、信頼できる接続を使用しています。
DMZ内では、IIS7が同じサーバー上で指すシステムドライブにファイルを展開しました。テスト環境はDMZ上にあるため、サーバーのIPアドレスと、接続文字列で指定する必要のある特別なポート番号を使用しています。
私のWebアプリケーションには接続文字列がありません。接続文字列を.csファイルに保持し、.NetのEvironment.machineName変数に基づいて、アプリケーションは実行時に使用する接続文字列を決定し、それをグローバル静的変数に格納するため、基本的に次のようになります。
public static readonly string strDBConnDev = "connection stuff here";
public static readonly String strDBConnTest = "connection stuff here";
public static String strDBConn;
次に、実行されるページロードで起動する関数があります
public static void setEnvVars()
{
// This is psuedocode
if(environment.machinename = "mydevmachine")
{
strDBConn = strDBConnDev;
}
if(environment.machinename = "mytestmachine")
{
strDBConn = strDBConnTest;
}
}
私は成功した開発者に接続します。接続文字列、またはそれに関する何かが正しくありません。System.Data.SqlClientを使用して、.Netデータプロバイダーを使用しています。これを使い続けることが重要です。他の環境では必要ないように思われるため、IIS7データベースセクションで接続文字列を構成していません。
私が見つけた記事によると:2つのフォーマットがあります。私の開発マシンが使用しているもの
//.NETDataProvider-信頼できる接続
System.Data.SqlClientを使用します。
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Data Source=ServerName;" +
"Initial Catalog=DataBaseName;" +
"Integrated Security=SSPI;";
conn.Open();
使用するためにdmzでのテストが必要なIP経由の接続:
//.NETDataProvider-IPアドレス経由
using System.Data.SqlClient;
SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Network Library=DBMSSOCN;" +
"Data Source=xxx.xxx.xxx.xxx,[port number];" +
"Initial Catalog=DataBaseName;" +
"User Id=UserName;" +
"Password=Secret;";
conn.Open();
私の難問は、DMZにあるときにその接続文字列変数が設定されていることを知っているという点で問題が発生したことです。ただし、接続に失敗してもエラーは発生しません。静かに失敗します。DMZでIISログを確認しましたが、手がかりやヒントの証拠は見つかりませんでした。また、Windowsのアプリケーションログを確認しましたが、何も見つかりませんでした。これはかなり驚くべきことだと思いました。
dmzホストからのデータベースサーバーの接続と可視性およびクレデンシャルを理解してテストできるように、トラブルシューティングのアイデアが必要だと感じているため、この時点で行き詰まっていると感じています。
デプロイ方法の背景としては、自分のマシンでビルドしてから、ファイルをc#Webアプリケーションのdmzホスト上のフォルダーにコピーしていることがあります。dbを呼び出そうとするまで、コードは正常に実行されます。
基本的に、いつ/どのようにトラブルシューティングを行うか、またネットワークの覗き見について何を尋ねるかを知っているので、自分の「スキル」について助けが必要だと感じています。