J'ai péché sur tant de niveaux. J'espère que quelqu'un peut me dire une meilleure façon de réécrire ce C#.J'ai péché .. Web.config réécrire à l'exécution ... pour elmah
On m'a demandé de modifier une section de web.config lors de l'exécution pour supprimer une partie du sujet pour un message d'erreur elmah et insérer le nom de la boîte. La raison en est que nous ne pouvons pas faire confiance à nos gens pour les obtenir correctement et donc nous perdons des erreurs de débogage de temps sur la mauvaise case.
donc avec ce devant moi laideur je commence à écrire ...
est la section ici dans le web.config que je suis en train de modifier
<elmah>
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/ELMAH" />
<errorMail from="..." to="..."
subject="Application: EditStaff_MVC, Environment:Dev, ServerBoxName: AUST-DDEVMX90FF"
async="true" />
</elmah>
est le code ici.
private void UpdateElmahErrorEmailSubject(string appPath)
{
string machineName = System.Environment.MachineName;
//System.Collections.IDictionary config = (System.Collections.IDictionary) ConfigurationManager.GetSection("elmah"); ;
//System.Configuration.Configuration config2 = (System.Configuration.Configuration) ConfigurationManager.GetSection("elmah/errorMail");
System.Configuration.Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(appPath);
if (config == null)
{
return;
}
ConfigurationSectionGroup sectionGroup = config.GetSectionGroup("elmah");
ConfigurationSection section = config.GetSection("elmah/errorMail");
// i was not able to get directly to the subject, so I had to write it as xml
string s = section.SectionInformation.GetRawXml();
string search = "ServerBoxName:";
//here is where i started to feel dirty, direct string parsing.
int startIndex = s.IndexOf(search);
int endIndex = s.IndexOf("\"", startIndex);
string toReplace = s.Substring(startIndex, (endIndex - startIndex));
s = s.Replace(toReplace, search + " " + machineName);
section.SectionInformation.SetRawXml(s);
config.Save();
}
peut-on contourner l'analyse des chaînes. J'ai essayé d'y arriver en tant que xml, mais j'ai quand même fini par analyser le sujet. Y a-t-il un meilleur moyen?
Merci,
Eric-
Pouvez-vous stocker les valeurs qui sont spécifique au serveur dans le fichier machine.config du serveur? Vous devrez toujours faire confiance à vos amis pour bien faire les choses, mais une fois que c'est correct, il devrait rester juste. – BStruthers
hélas, tout le point d'éviter les problèmes de Cm, donc cela les réduit mais ne les supprime pas. –
Je dois vous upvote juste pour la belle mise en forme du code. Très agréable. Alignés égaux est la seule vraie façon ... –