J'ai un site Web que je publie dans Visual Studio 2008, puis j'envoie à d'autres personnes. Une des pages doit modifier quelques fichiers de configuration. Une action est donc exécutée à l'aide de WindowsImpersonationContext dans une bibliothèque de classes référencée par le site Web.Pourquoi un site Web publié fait-il référence à ma machine?
protected void WithImpersonation(ExecuteUnderImpersonation action)
{
using(WindowsImpersonationContext context = Request.LogonUserIdentity.Impersonate())
{
action();
}
}
Cependant, lorsque quelqu'un tente de soumettre cette page, il renvoie une erreur qu'il était
Impossible d'enregistrer config dans le fichier 'C: \ Inetpub \ wwwroot \ SomeWebsite \ web.config' .
En regardant le StackTrace Je vois cette entrée:
à SomeClassLibrary.SomeClass.WithImpersonation (ExecuteUnderImpersonation action ) dans FILEPATH DE MON MACHINE: ligne 23
Cela semble se produire sur une seule page spécifique, même si plusieurs pages appellent cette même méthode.
Si j'ai publié le site Web (en mode Updatable) dans le dossier PrecompiledWeb et que je l'ai libéré avec les références appropriées dans le répertoire bin, pourquoi recherche-t-il la classe sur mon ordinateur? L'erreur n'a même pas de sens, si elle cherche un fichier qui n'existe pas sur leur serveur, ne devrait-il pas avoir une erreur très différente?
J'ai pris le même site Web et l'ai mis sur un de mes serveurs connectés au domaine. Si j'ai essayé d'exécuter la même page à partir du serveur connecté comme moi-même ou sur mon ordinateur, je ne reçois pas cette erreur.
Un collègue a déjà dit qu'ils reçoivent parfois cette erreur, mais que disparaît finalement. Nous ne pouvons pas identifier la cause du problème, mais si le même site Web devait être extrait de SVN sur un autre ordinateur, publié, puis envoyé, cette erreur ne se produit pas du tout.
Des idées sur ce qui se passe?
Nous utilisons des serveurs de build, mais c'était en quelque sorte une "circonstance spéciale" qui me dépasse en tant que développeur. Je n'ai pas vérifié si les fichiers .pdb étaient inclus dans le dossier bin, mais c'est possible.Je pensais que je l'avais construit en mode release, mais j'ai peut-être tort. – Brandon
Il se peut qu'il existe encore des points d'entrée pour le fichier source d'origine dans l'assemblage - PDB peut s'y connecter et fournir des informations plus détaillées. –
Vous semblez être correct, les fichiers pdb ont été déployés avec le site Web publié. Je sais très peu de choses sur les fichiers pdb à part le fait qu'ils m'aident à déboguer, alors vous m'avez sauvé beaucoup de temps perdu. Merci! – Brandon