OracleConnection connection = DBHelper.OracleConnection; OracleCommand OraCommand = connection.CreateCommand(); OraCommand.CommandText = "AUTHENTICATION.Authenticate"; OraCommand.CommandType = CommandType.StoredProcedure; int zero = 0; OracleParameter newParam = null; OraCommand.Parameters.Add(newParam); newParam = new OracleParameter("Authenticated",OracleType.VarChar); newParam.Direction = ParameterDirection.Output; newParam.Size = 4000; OraCommand.Parameters.Add(newParam); newParam = new OracleParameter("Message",OracleType.VarChar); newParam.Direction = ParameterDirection.Output; newParam.Size = 4000; OraCommand.Parameters.Add(newParam); newParam = new OracleParameter("Response",OracleType.VarChar); newParam.Direction = ParameterDirection.Output; newParam.Size = 4000; OraCommand.Parameters.Add(newParam); try { connection.Open(); OraCommand.ExecuteNonQuery(); connection.Close(); errorLabel.Text = OraCommand.Parameters["Message"].Value.ToString() ; if (OraCommand.Parameters["Authenticated"].Value.ToString() == "Yes") { this.Response.Redirect("Default.aspx",true); }else { errorLabel.Text = OraCommand.Parameters["Message"].Value.ToString() + Request.ServerVariables["SERVER_SOFTWARE"] + OraCommand.Parameters[9].Value.ToString(); } } catch (Exception ex) { errorLabel.Text = ex.ToString(); }
预期产出:
@H_301_6@1) Message – You have successfully logged in
但我得到一个截断的字符串:你有成功
@H_301_6@2) Authenticated – Yes
但我得到一个截断的字符串
ÿ
相同的代码在IIS 7.5中工作正常,我们将服务器升级到IIS 8.5,现在我遇到了这个问题.
我确实阅读了一些关于ado.net弃用的文章并使用了odp.net.我不想将我的代码更改为ODP.net.
你有什么想法,为什么我的输出变量被截断?
当我们升级IIS 8.5时,我们在该机器上安装了12.1.0即时客户端.这会导致问题???
解决方法
这是Oracle Client 12c中的错误.它不仅截断字符串,还截断数字.恢复到客户端11g修复了问题.