2017-02-10 10 views
0

Облицовка проблемы с IIS 8, сервером Windows 2012. Веб-приложение, написанное на asp.net C# mvc razor 5 Я столкнулся с блокировкой файлов (изображение файл) IIS. У меня есть страница профиля пользователя, где я показываю pic профиля пользователя. Я заметил, что как только я просто покажу страницу профиля в браузере, образ профиля на диске заблокирован IIS. Профиль изображение дисплей с тегом IMG, как показано ниже (Model.ImagePath является строка пути)Файл автоматически блокируется IIS 8 (C#, ASP.net mvc razor)

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> 

Как только страница отображается изображение профиля на локальном сервере блокируется. Это создает проблему из-за страницы профиля, пользователь может редактировать изображение. Поэтому отредактированное изображение (с использованием вольерного высокого разрешения) не сохраняется, поскольку оно говорит «" System.IO.IOException: процесс не может получить доступ к файлу «C: \ Users \ webapp \ 73a.jpg», потому что он используется другим процессом . »

В моем локальном экземпляре Windows (Windows 10, IIS 8) эта проблема возникает, но через 3 - 4 минуты блокировка автоматически удаляется и файл сохраняется после редактирования. Это заставляет меня чувствовать, что это некоторые Если у кого-то возникли проблемы с подобной проблемой, пожалуйста, обратитесь к нам.

Я проверил инструмент sysinternal tool.exe и вижу, что это указывает на рабочий процесс IIS.

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 

ответ

1

Я нашел проблему и решение. В контроллере возникла проблема с функцией определения размера изображения (для применения некоторого правила CSS для мобильного приложения).

System.Drawing.Image img = System.Drawing.Image.FromFile(Server.MapPath("~") + spe_Fil.ImagePath); 

Объект img не был удален и, следовательно, был применен замок. После добавления img.dispose() проблема блокировки файлов была решена.