Es porque está definiendo el parámetro en .NET como un ReturnValue que en realidad equivaldría al escenario en el que usa RETURN dentro del procedimiento almacenado para devolver un número entero (lo que no está haciendo).
En su lugar, debe definir el parámetro @strFailedEMPID como ParameterDirection.Output dentro de su código .NET. Si desea pasar un valor Y recibir uno a través del parámetro, use ParameterDirection.InputOutput.
Después de ejecutar el sproc, simplemente:
string value = lsqlCmd.Parameters["@strFailedEMPID"].value;
Entonces....
lsqlParam = new SqlParameter("@strFailedEMPID ", SqlDbType.VarChar);
lsqlParam.Value = "0";
lsqlParam.Direction = ParameterDirection.InputOutput;
lsqlCmd.Parameters.Add(lsqlParam);
lsqlCmd.ExecuteNonQuery();
string value = lsqlCmd.Parameters["@strFailedEMPID"].value;