2017-02-10 3 views
0

Face à un problème avec IIS 8, Windows Server 2012. Application Web écrite dans asp.net C# mvc razor 5 Je suis confronté à un verrouillage de fichier (image fichier) par IIS. J'ai une page de profil d'utilisateur où j'affiche la photo de profil d'utilisateur. J'ai remarqué que dès que j'affiche simplement la page de profil dans le navigateur, l'image de profil sur le disque est verrouillée par l'IIS. Photo de profil est affichage avec une balise img comme illustré ci-dessous (Model.ImagePath est un chemin de chaîne)Fichier automatiquement verrouillé par IIS 8 (C#, ASP.net mvc rasoir)

string ImageUrl = ""; 
if (Model.ImagePath == null || Model.ImagePath == "/AppContents/1/Speaker/") 
{ 
    ImageUrl = "http://" + HttpContext.Current.Request.Url.Authority + "/AppContents/1/avatar.png";} 
else 
{ 
    ImageUrl = "http://" + HttpContext.Current.Request.Url.Authority + Model.ImagePath; 
} 
... 

<section class="col col-5" style="padding: 0px 0px 0px 4px;"> 
<label class="label">Profile Picture <span class="">(120px X 120px)</span>  </label> 

    <div class="editor-label"> 
    <span> 
    <a onclick="return launchEditor_avatar('blah','@ImageUrl');" href="#"> 
     <img id="blah" style="margin:10px;width: auto !important;height: auto !important;max-height: 85px; max-width: 120px;min-height: auto;min-width: 50px;" src="@ImageUrl" /> 
     </a> 
    </span> 

    <span style="border: 1px initial #808080">@Html.CheckBoxFor(model => model.moderator) Is a Moderator 
    </span> 
</section> 

Dès que la page est rendu l'image de profil sur le serveur local est verrouillé. Cela crée un problème en raison de la page de profil, l'utilisateur peut modifier l'image. L'image ainsi éditée (en utilisant aviary haute résolution) n'est pas enregistrée car elle dit "" System.IO.IOException: Le processus ne peut pas accéder au fichier 'C: \ Users \ webapp \ 73a.jpg' parce qu'il est utilisé par un autre processus Sur mon instance Windows locale (Windows 10, IIS 8), ce problème apparaît, mais après 3 à 4 minutes, le verrou est automatiquement supprimé et le fichier est enregistré après l'édition. S'il vous plaît guidez si quelqu'un a fait face à un problème similaire

J'ai vérifié l'outil sysinternal "handle.exe" et je vois qu'il pointe vers le processus de travail IIS.Quelqu'un peut-il guider s'il vous plaît comment faire pour résoudre ce problème

C:\Downloads\Handle>handle.exe C:\Users\webapp\73a.jpg 


Nthandle v4.1 - Handle viewer 
Copyright (C) 1997-2016 Mark Russinovich 
Sysinternals - www.sysinternals.com 

w3wp.exe   pid: 2720 type: File   794: C:\Users\webapp\73a.jpg 
w3wp.exe   pid: 2720 type: File   A34: C:\Users\webapp\73a.jpg 
w3wp.exe   pid: 2720 type: File   A9C: C:\Users\webapp\73a.jpg 

Répondre

1

J'ai trouvé le problème et la solution. Dans le contrôleur, une fonction permettant d'identifier la dimension de l'image (pour appliquer une règle CSS à l'application mobile) était à l'origine du problème. L'objet img n'a pas été éliminé et, par conséquent, un verrou a été appliqué. Après avoir ajouté img.dispose(), le problème de verrouillage de fichier a été résolu.