c# – Microsoft-IIS / 8.5,Oracle输出变量被截断

前端之家收集整理的这篇文章主要介绍了c# – Microsoft-IIS / 8.5,Oracle输出变量被截断前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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修复了问题.

猜你在找的C#相关文章