0

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?

Répondre

2

Cela fait partie de la base de données de débogage de programme (fichier .PDB) pour autant que je sache. Eh bien, la partie où vous pensez que c'est référencer votre machine qui est.

Vous devriez vraiment utiliser un serveur de construction. ;-) Mais c'est un autre sujet.

La raison pour laquelle l'erreur se produit est due au fait que les autres utilisateurs n'ont vraisemblablement pas les LCA correctes à enregistrer dans le dossier Web.

+0

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

+0

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. –

+0

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

1

C'est juste le chemin vers le fichier source lorsque l'application a été compilée. Je suis sûr que votre erreur n'est pas liée à cela. Je suppose que votre problème est que, bien que vous ayez la permission de modifier le fichier, la plupart des utilisateurs ne le font pas. Vérifiez les autorisations sur le fichier/répertoire pour voir si vous avez besoin de l'ouvrir. Peut-être que la raison pour laquelle cela n'arrive pas toujours est que les fichiers n'ont besoin d'être mis à jour qu'une seule fois et que quelqu'un ayant les bonnes informations d'accès y accède et que c'est corrigé pour tout le monde.