下面是代码:C# - 无法参数值从RuntimeMethodInfo转换为字符串
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中的代码,并且在尝试在该行执行代码时仅收到错误。
我的
未能参数值从RuntimeMethodInfo转换为字符串
,但没有命中进行谷歌搜索。所以,我搜索了
从RuntimeMethodInfo转换为字符串
,仍然没有运气。
为了帮助您理解代码好一点,声明
GetSqlCommand("ins_error_log", databaseConnection)
基本熄灭,并承认在引号中的信息是存储过程,而不是一个查询字符串。
所有这些代码上面已经在整个应用程序(别人写的)使用,我所做的就是将它复制并进行必要的修改,以存储过程的名称,该SQL参数,并插入值。
我感谢你的帮助!
*注:我试过设置这个问题称为“RuntimeMethodInfo”的标签,但它不会让我,因为我有不到1500的声誉。也许别人可以为我做,或给我处理这个问题的权限。
甜,让我插入这个,我会让你知道。谢谢! – Invaderleige
嗯,这并没有给我我想要的价值,但它确实阻止了错误。所以我会给你修补的功劳。我一直在玩代码,并决定如果传入的所有参数都是String数据类型(而不是传递Exception数据类型),以防止出现任何错误。不是我所希望的工作,但有时似乎你需要“胶带”这个问题。 – Invaderleige
好吧,我不能告诉你在你的代码之后是什么,所以我只是选择了一些东西:)很高兴它指出你在正确的方向。 – geofftnz