- 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();
- }
预期产出:
1) Message – You have successfully logged in
但我得到一个截断的字符串:你有成功
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修复了问题.