Hi
Custom action for checking sqlserver connection not validating correctly. Test connection button click custom action as below .Let me know how i can rectify it and make it working correctly
public static ActionResult TestSqlConnection(Session session)
{
try
{
if (session == null)
{
throw new ArgumentNullException("session");
}
SetSessionProperty(session, "DATABASE_TEST_CONNECTION", "0");
string sConnectionString = GetConnectionString(session, false);
if(string.IsNullOrEmpty(sConnectionString))
{
result = ActionResult.Failure;
}
else
{
using (SqlConnection sqlConect = new SqlConnection(sConnectionString))
{
sqlConect.Open();
SetSessionProperty(session, "DATABASE_TEST_CONNECTION", "1");
MessageBox.Show("Test Connection Successful", "Test connection", MessageBoxButtons.OK, MessageBoxIcon.Information);
result = ActionResult.Success;
}
}
}
catch (Exception ex)
{
InstallUtilities.WriteLogInstall(session, "exception occurs while connecting to database server", ex, true);
MessageBox.Show(ex.Message, "Test Coonection", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return result;
}
private static string GetConnectionString(Session session, bool isCustomActionData)
{
string sConnectionString=string.Empty;
if (GetSessionProperty(session, "DATABASE_SERVERNAME",isCustomActionData)=="0")
{
sConnectionString = string.Empty;
}
else
{
if((GetSessionProperty(session,"DATABASE_SERVERNAME",isCustomActionData)=="1"))
{
if ((GetSessionProperty(session, "DATABASE_WINDOWSAUTHENTICATION", isCustomActionData) == "1"))
{
sConnectionString = string.Format("Integrated Security=SSPI;Persist Security Info=False;Data Source={0};",
GetSessionProperty(session, "DATABASE_SERVERNAME", isCustomActionData).Trim());
}
else
{
sConnectionString = string.Format("Persist Security Info=False;Data Source={0};User ID={1};Password={2};",
GetSessionProperty(session, "DATABASE_SERVERNAME", isCustomActionData),
GetSessionProperty(session, "DATABASE_USERNAME", isCustomActionData),
GetSessionProperty(session, "DATABASE_PASSWORD", isCustomActionData));
}
}
}
return sConnectionString;
}
this is my database setting Dialog structure
<Control Id="Test" Type="PushButton" X="25" Y="243" Width="100" Height="17" Text="!(loc.DatabaseServerDlg_Test)">
<Condition Action="disable"><![CDATA[
this is customaction in customAction.wxs
<CustomAction Id="CA_DataBaseTestConnection" BinaryKey="BIN_CustomAction" DllEntry="TestSqlConnection" Execute="immediate" Impersonate="yes" Return="ignore" />