数组:"索引超出了数组的范围"

use*_*100 4 c# asp.net arrays windows-server-2008

我的Web应用程序出现以下错误:"索引超出了数组的范围."

奇怪的是,问题只出现在我的网络服务器上(Windows Server 2008 R2,.Net 4.0,Windows 7 Enterprise 64 Bit).

当我在Visual Studio中调试网站时,一切都很完美

该代码如下所示:

我定义一个数组并将其提供给"CheckUserRights"类

string NTLogin = Page.User.Identity.Name.ToString().Split(new char[] { '\\' })[1].ToUpper();
string[] allowedRoles = new string[2] { "Administrator", "Superuser" };
CheckUserRights Check = new CheckUserRights(NTLogin, allowedRoles);
Run Code Online (Sandbox Code Playgroud)

这个类看起来像这样:

//Lokale Variablen definieren
string strUserName;
string strRolename;
string[] AllowedRoles;
bool boolAuthorized;

//Im Konstruktor definierte Werte übergeben.
public CheckUserRights(string Username, string[] Roles)
{
    this.strUserName = Username;
    this.AllowedRoles = Roles;
    getRoleForUser();
    checkRights();
}
...
...
Run Code Online (Sandbox Code Playgroud)

我在4小时后搜索了一个解决方案,但我找不到任何东西.我不是专业人士,这是我第一次使用数组.

它可能是服务器上的错误配置吗?

我很感激每一个帮助.谢谢!

更新

解决了,服务器配置出现问题.解决方案是史蒂夫的答案.

Ste*_*eve 5

该代码中存在许多问题,但是,坚持问题标题上的问题我觉得这一行看起来很可疑:

string NTLogin = Page.User.Identity.Name.ToString().Split(new char[] { '\\' })[1].ToUpper();  
Run Code Online (Sandbox Code Playgroud)

如果Page.User.Identity.Name不包含DOMAIN\USERNAME会发生什么?

可以改写为

string[] nameparts = Page.User.Identity.Name.ToString().Split(new char[] { '\\' });
string NTLogin = (nameparts.Length == 2 ? nameparts[1] : nameparts[0]).ToUpper();
if(NTLogin.Length == 0)
    return;            
Run Code Online (Sandbox Code Playgroud)

为什么这个属性可能是错误?看看这篇文章