Tableau: “l'Index était en dehors des limites du tableau”
J'obtiens l'erreur suivante sur mon application web: "Index était en dehors des limites du tableau."
La chose étrange, c'est que le problème ne vient sur mon serveur (Windows Server 2008 R2, .Net 4.0, Windows 7 Entreprise 64 Bits).
Quand je debug le site dans Visual Studio, il marche parfaitement
Le Code ressemble à ceci:
J'ai créer un tableau et de le donner à la classe "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);
La classe ressemble à ceci:
//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();
}
...
...
J'ai cherché une solution au bout de 4 heures, mais je ne peux pas trouver quoi que ce soit. Je ne suis pas un pro et c'est la première fois que j'ai utilisé des tableaux.
Pourrait-il être une mauvaise configuration sur le serveur?
Je suis reconnaissant pour toute aide. Merci!
Mise à jour
Résolu, il y avait un problème dans la configuration du serveur. La Solution est dans la réponse de Steve.
Aucune chance de le stacktrace?
Où en êtes-vous l'erreur? Je ne peux pas voir toutes les tentatives d'accès à la gamme dans votre code...
Une trace de pile serait utile. L'erreur pourrait être dans getRoleForUser ou checkRights. Vous avez besoin de nous montrer le code.
Pratique Standard pour l'utilisation de l'anglais pour le code, surtout depuis que tous les de la .net framework est en anglais.
OriginalL'auteur user1221100 | 2012-05-08
Vous devez vous connecter pour publier un commentaire.
Il y a beaucoup de problèmes dans ce code, mais, s'en tenir à votre problème sur la question du titre, je pense que cette ligne semble suspect:
ce qui se passerait si la Page.De l'utilisateur.L'identité.Le nom ne contient pas de DOMAINE\nom d'utilisateur?
Pourrait être réécrit comme
Pourquoi cette propriété pourrait être l'erreur? Regardez cet article
Salut Steve, merci pour votre aide. J'ai maintenant essayer quelques choses et il pourrait vraiment être probablement le problème à partir de votre site lié. Tous les "symptomes" de correspondance.
Maintenant ça fonctionne! Je vous remercie beaucoup. Le problème, c'est que j'ai dû faire désactiver "anonyme authentification" et activez l'option "authentification Windows". Non la valeur de la "NTLogin"-Arry a une valeur et ça fonctionne 😀
Heureux d'être de l'aide. Cependant, si je comprends bien, avec "anonyme" authentification active, alors la Page.De l'utilisateur.L'identité.Le nom sera vide conduisant à "l'Indice était en dehors des limites d'erreur". Eh bien, le problème a été résolu! Veuillez accepter la réponse si vous le trouvez utile.
OriginalL'auteur Steve
1) Votre code est vulnérable à une attaque par injection SQL sur la première sélection dans getRoleForUser. Vous devez utiliser un SqlParameter.
2) sans une trace de la pile, il est difficile de déterminer où est l'erreur. Cependant, je pense que ça peut-être que le sql sélectionne pourrait revenir PAS de LIGNES. Donc, chaque fois que vous faites un
r.Read
, de le modifier pourif (!r.Read()) return;
.Encore une fois, si vous publiez la trace de la pile, nous pouvons être de mieux les aider.
OriginalL'auteur Richard Schneider
Comment je l'ai résolu comme suit:
OriginalL'auteur Priti