There is a good chance that the Query string "I_Name" is returning null - it's difficult to tell from that code.
If so, then try passing it as an empty string:
string s = context.Request.QueryString["I_Name"];
s = s == null ? "" : s;
It would be worth changing to AddWithValue anyway - Add is depreciated (and has been for a long time!)
string s = context.Request.QueryString["I_Name"];
cmd.Parameters.AddWithValue("@I_Name", s == null ? "" : s);
[edit]Where did that extra semicolon come from? - OriginalGriff[/edit]