J'ai un problème intéressant que j'essaie de résoudre. J'ai le code suivant ci-dessous qui est fondamentalement une fonction pour fusionner des valeurs avec un fichier html et me donner le jeu de résultats. J'utilise une hashtable à ces fins.C# Hashtable "référence d'objet non définie"
La fonction est la suivante (S'il vous plaît garder à l'esprit que j'ai hérité cette fonctionnalité et ne peut être changé à l'heure actuelle)
public static string ParseTemplate(string _FileName, int _NumberofSomething)
{
Hashtable templateVars = new Hashtable();
templateVars.Add("NameOfFile", _FileName);
templateVars.Add("NumberOfSomething", _NumberofSomething);
TemplateParser.Parser parser =
new TemplateParser.Parser(
System.Web.HttpContext
.Current.Server.MapPath("~/docs/Templatenr.htm"), templateVars);
return parser.Parse();
}
Sur notre dev et serveurs live, il fonctionne parfaitement. Cependant, j'essaie de déployer l'application sur un autre serveur de production et d'obtenir une "référence d'objet non définie sur une instance d'objet". Il se brise exactement sur le "Hashtable templateVars = new Hashtable();" ligne. Donc, je suis un peu perplexe. Si c'était un problème de codage, cela ne devrait pas fonctionner partout sûrement?
Les seules différences entre les différents serveurs de production sont le système d'exploitation et les services Internet (IIS) en cours d'exécution. c'est à dire. Server 2005 et IIS7 vs Server2003 et IIS6 (qui est l'environnement qu'il casse). Les deux ont .net framework jusqu'à 3.5 installé. L'ancien système d'exploitation et l'ISS pourraient-ils être le problème? Est-ce une permission/mémoire? bien que cela semble un peu invraisemblable puisque toutes les autres fonctionnalités .net que j'utilise sur le nouveau serveur de production fonctionnent parfaitement.
Tous les problèmes concernant la hashtable que j'ai trouvé, se rapportent à ce qu'il ne soit pas instancié. Cependant, mon erreur se produit sur la ligne qui essaie d'instancier une Hashtable.
Quelqu'un a-t-il déjà eu une erreur comme celle-ci et si oui, comment l'avez-vous résolu? J'apprécierais même des suggestions sur ce qu'il faut chercher et je vais essayer. Je posterai également le résultat, si quelqu'un d'autre rencontre cette erreur à l'avenir.
Est-ce que 'System.Web.HttpContext.Current.Server.MapPath (" ~/docs/Templatenr.htm ")' ce fichier existe sur le nouveau serveur? Le compte d'utilisateur qui exécute l'application a-t-il également accès à ce fichier? – Jimmy
Personnellement, je suggérerais d'utiliser un outil tel que Reflector Pro pour déboguer dans le code Framework pour le constructeur HashTable, afin de voir d'où l'exception est réellement levée. –
@Jimmy, Oui et Oui. Cependant la fonction ne va même pas aussi loin, elle s'arrête à la première ligne. – Sonja