Вот код:
internal static void UpdateErrorLogTable(string type, string location, string method, Exception _error, string ftpDirectory, string remoteName, string localName)
{
try
{
using (SqlConnection databaseConnection = GetDatabaseConnection())
{
using (SqlCommand cmd = GetSqlCommand("ins_error_log", databaseConnection))
{
SqlParameter log_date = cmd.Parameters.Add("@log_date", SqlDbType.DateTime);
SqlParameter exception_type = cmd.Parameters.Add("@exception_type", SqlDbType.VarChar);
SqlParameter class_name = cmd.Parameters.Add("@class_name", SqlDbType.VarChar);
SqlParameter method_name = cmd.Parameters.Add("@method_name", SqlDbType.VarChar);
SqlParameter error_msg = cmd.Parameters.Add("@error_msg", SqlDbType.VarChar);
SqlParameter stack_trace_msg = cmd.Parameters.Add("@stack_trace_msg", SqlDbType.VarChar);
SqlParameter target_site_msg = cmd.Parameters.Add("@target_site_msg", SqlDbType.VarChar);
SqlParameter ftp_directory = cmd.Parameters.Add("@ftp_directory", SqlDbType.VarChar);
SqlParameter ftp_name = cmd.Parameters.Add("@ftp_name", SqlDbType.VarChar);
SqlParameter ftp_path = cmd.Parameters.Add("@ftp_path", SqlDbType.VarChar);
SqlParameter inner_exception_msg = cmd.Parameters.Add("@inner_exception_msg", SqlDbType.VarChar);
log_date.Value = m_todaysDate;
exception_type.Value = type;
class_name.Value = location;
method_name.Value = method;
error_msg.Value = _error.Message;
stack_trace_msg.Value = _error.StackTrace;
target_site_msg.Value = _error.TargetSite;
ftp_directory.Value = ftp_directory;
ftp_name.Value = remoteName;
ftp_path.Value = localName;
inner_exception_msg.Value = _error.InnerException;
cmd.ExecuteNonQuery();
}
} // using databaseConnection
} //end of TRY statement
catch (SqlException e)
{
logFile.SendToLog("SqlException", "Logs\\LogsDataAccess.cs", "UpdateErrorLogTable()", e);
} //end of SqlException CATCH statement
} //end of method UpdateErrorLogTable
Я получаю ошибку InvalidCastException, но это происходит при попытке выполнить
cmd.ExecuteNonQuery();
Часть, которую я не могу понять, это то, почему я получаю InvalidCastException здесь, а не в одной из точек выше, где я присваиваю значения. Я пошагово прошёл код в Debug построчно, и он получает ошибку только при попытке выполнить код в этой строке.
Я выполнил поиск Google для
Не удалось преобразовать значение параметра из RuntimeMethodInfo в строку
но без попаданий. Поэтому я искал
преобразовать из RuntimeMethodInfo в строку
и до сих пор не повезло.
Чтобы помочь вам понять код немного лучше, утверждение
GetSqlCommand("ins_error_log", databaseConnection)
в основном выходит и распознает информацию в кавычках как хранимую процедуру, а не строку запроса.
Весь этот код выше использовался во всем приложении (написанном кем-то другим), и все, что я сделал, это скопировал его и внес необходимые изменения в имя хранимой процедуры, параметры SQL и вставленные значения.
Я ценю вашу помощь!
* Примечание: я попытался установить TAG для этого вопроса как "RuntimeMethodInfo", но он не позволил мне, потому что у меня менее 1500 репутации. Может быть, кто-то другой может сделать это для меня или дать мне разрешение на это.