BOGUE : Impossible de compiler des fichiers code-behind qui utilisent un attribut Src sur un partage UNC

Traductions disponibles Traductions disponibles
Numéro d'article: 313105 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F313105
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Sommaire

Symptômes

Il se peut que la compilation d'un formulaire Web échoue dans ASP.NET et que vous receviez le message d'erreur suivant (ou un message similaire) :
Message d'erreur de compilation : CS2001 : Fichier source
'Impossible de trouver \\serveur\nom du partage\webform1.aspx.cs'.
Cette erreur se produit si les conditions suivantes sont réunies :
  • Le modèle du modèle code-behind est utilisé.
  • La page utilise une compilation dynamique avec l'attribut Src qui pointe vers un fichier sur un ordinateur à distance en utilisant un partage UNC.
  • L'emprunt d'identité est activé dans le fichier Web.config.

Cause

Ce problème se produit parce que le compilateur démarre avec l'identité d'un processus de traitement et que ce processus ne peut lire le partage à distance. Comme ASP.NET utilise le jeton d'emprunt d'identité pour lire la page, ASP.NET réussit à la lire correctement.

Résolution

Pour résoudre ce problème, appliquez l'une des méthodes suivantes :
  • Accorder au partage l'accès au compte utilisé pour le processus de traitement. Si vous utilisez un compte système ou un service réseau, vous pouvez accorder l'accès au compte ordinateur.

    Pour cela, procédez comme suit :
    1. Cliquez avec le bouton droit sur le partage, puis cliquez sur Propriétés.
    2. Dans l'onglet Partage, cliquez sur Autorisations, puis sur Ajouter.
    3. Entrez le nom du serveur Web, puis cliquez sur Vérifier les noms. Il s'affiche comme $nom_machine sous Autorisations de partage dans la boîte de dialogue Autorisations de ce partage.
  • Utilisez des fichiers code-behind avec des DLL précompilées plutôt que la compilation dynamique.
  • Utilisez des fichiers avec une seule page plutôt que des fichiers code-behind.
  • Exécutez le processus de traitement comme un compte pouvant accéder au partage. Pour effectuer cette configuration, utilisez les attributs de nom d'utilisateur et de mot de passe de l'élément processModel du fichier Machine.config.

Statut

Microsoft a confirmé l'existence de ce bogue dans les produits Microsoft répertoriés dans la section "Liste des produits concernés par cet article".

Plus d'informations

Procédure pour reproduire le comportement

  1. Créez une page .aspx nommée Webform1.aspx.
  2. Utilisez l'un des exemples suivants pour la directive de page :
    <%@ Page language="c#"  Codebehind="WebForm1.aspx.cs"  Src = "WebForm1.aspx.cs" %>
    
    - ou -
    <%@ Page language="vb"  Codebehind="WebForm1.aspx.vb"  Src = "WebForm1.aspx.vb" %>
    
  3. Créez une page code-behind et nommez-la en fonction de la directive de page choisie à l'étape 2.
  4. Ajoutez un utilisateur de domaine (domain\user) comme Administrateur de l'ordinateur.
  5. Créez un partage et donnez ensuite les autorisations complètes uniquement à l'utilisateur de domaine.
  6. Dans le Gestionnaire des services Internet, créez une application IIS (Microsoft Internet Information Server), puis utilisez le domaine\utilisateur pour vous connecter.
  7. Créez un répertoire virtuel dans l'application qui pointe vers le partage que vous avez créé précédemment.
  8. Déplacez le fichier WebForm1.aspx et le fichier code-behind vers le partage.
  9. Créez un nouveau fichier Web.config, puis ajoutez le code suivant :
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      
    <system.web>
        
    <authentication mode="Windows" />
        
    <identity impersonate="true" userName="domain\user" password="password" />
     
     
    </system.web>
    </configuration>
    
  10. Copiez le fichier Web.config dans le répertoire virtuel pour que l'application Web ajoute le fichier à l'application IIS.
  11. Ouvrez la page.

Propriétés

Numéro d'article: 313105 - Dernière mise à jour: lundi 24 février 2014 - Version: 2.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ASP .NET (inclus avec .NET Framework)
  • Microsoft .NET Framework Software Development Kit 1.0
Mots-clés : 
kbnosurvey kbarchive kbbug kbdeployment kbgrpdsasp kbnofix kbreadme kbsecurity kbwebforms KB313105
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com