好的,所以昨天我发布了一些我正在开发的系统遇到的问题。我现在遇到的问题是,我正在经历最坏的情况,并认为用户以某种方式尝试调用我的 Web 服务并忘记输入参数,因此 Web 服务接收到空参数……我尝试使用If
,仍然给我一个ArgumentException
错误,所以我离开了if
验证,而是将整个代码放在 atry-catch
中,问题是这个“catch 没有进入那个代码块,它只是不断抛出ArgumentException
纯网络文本...
这是我的代码:
[WebMethod(Description = "Private Title", EnableSession = false)]
public string[] M102(int p_enclosure, string p_transaction, int p_operation, int p_commodity,
string p_bl, string p_inDate, string p_blhouse, string p_anexo29, int p_tranType,
string p_vessel, string p_trip, int p_entry, string p_padlock, string p_brands,
string p_appoint, string p_plates, string p_qmark)
{
string eDate;
try
{/*/WebService Code/*/}
catch (ArgumentException Ex)
{
string message;
string[] error =
{
"000",
"DataCaptureError.- " + Ex.Message,
"Date"
};
SqlConnection con8 = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CTSSQL"].ConnectionString);
SqlCommand cmd8 = new SqlCommand();
cmd8.Connection = con8;
cmd8.CommandText = "dbo.sp_errorlog";
cmd8.CommandType = CommandType.StoredProcedure;
cmd8.Parameters.Add("@p_inTrans", SqlDbType.NChar, 12).Value = "0";
cmd8.Parameters.Add("@p_enclosure", SqlDbType.NChar, 6).Value = "0";
cmd8.Parameters.Add("@p_trans", SqlDbType.NChar, 18).Value = "0";
cmd8.Parameters.Add("@p_method", SqlDbType.NChar, 6).Value = "102";
cmd8.Parameters.Add("@p_message", SqlDbType.NVarChar, 250).Value = error[1];
cmd8.Parameters.Add("@vo_message", SqlDbType.VarChar, 250).Direction = ParameterDirection.Output;
cmd8.Parameters.Add("@vo_errorDate", SqlDbType.DateTime).Direction = ParameterDirection.Output;
con8.Open();
cmd8.ExecuteNonQuery();
con8.Close();
cmd8.Connection.Close();
message = "" + cmd8.Parameters["@vo_message"].Value;
eDate = "" + cmd8.Parameters["@vo_errorDate"].Value;
eDate = Convert.ToDateTime(eDate).ToString("dd/MM/yyyy HH:mm:ss");
error[2] = eDate;
return error;
}
}
我想要做的是获取该错误消息并将其放入我的数据库中......问题是它永远不会进入 CATCH 代码,它会直接吐出错误。
希望有人可以帮助我找到一种方法来捕获或验证此 NULL 参数问题并将其粘贴到数据库中
无论如何,谢谢你们。