Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 索引超出了数组的边界(第500个?)_C#_Asp.net - Fatal编程技术网

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{}\周围,因为测试服务器没有正确设置。