C# 索引超出了数组的边界(第500个?)
在加载时调用函数,错误指向该函数。仅在发布时调试时,我没有得到索引超出范围的错误C# 索引超出了数组的边界(第500个?),c#,asp.net,C#,Asp.net,在加载时调用函数,错误指向该函数。仅在发布时调试时,我没有得到索引超出范围的错误 { string strLogonUser = Request.ServerVariables["LOGON_USER"]; var credential = strLogonUser.Split(@"\".ToCharArray())[1]; cnn.Open(); SqlTransaction tran = cnn.BeginTra
{
string strLogonUser = Request.ServerVariables["LOGON_USER"];
var credential = strLogonUser.Split(@"\".ToCharArray())[1];
cnn.Open();
SqlTransaction tran = cnn.BeginTransaction();
cmd.Connection = cnn;
cmd.Transaction = tran;
cmd.CommandText = "StoredProcedure";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@UserLogin", SqlDbType.NVarChar).Value = credential;
cmd.ExecuteNonQuery();
}
[IndexOutOfRangeException: Index was outside the bounds of the array.]
_Default.ReadUser() +357
_Default.Page_Load(Object sender, EventArgs e) +46
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42
System.Web.UI.Control.OnLoad(EventArgs e) +132
System.Web.UI.Control.LoadRecursive() +66
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428
如果LOGON\u USER server变量不包含反斜杠,那么肯定会出现错误。。。您将使用元素1作为单个元素数组的第二个元素 听起来您应该在拆分之前添加更多日志记录来记录值。您可以添加登录检查用户变量:
string strLogonUser = Request.ServerVariables["LOGON_USER"];
if(String.IsNullOrEmpty(strLogonUser)) // <<<<<<
throw new ArgumentException();
var credential = strLogonUser.Split(@"\".ToCharArray())[1];
似乎未设置此变量。最有可能的情况是您允许匿名访问,因此该变量中有一个空白字符串调试时登录用户是否不同?更具体地说,另一个是否不包含“\”?为什么不进行检查以查看是否存在\并且我建议将该代码放在Try{}Catch{}\周围,因为测试服务器没有正确设置。