2015-10-13 2 views
1

На сайте asp.net mvc 5, размещенном на сервере windows 2012, у меня есть некоторые статические файлы jpg в папке в структуре папок веб-сайта (/Files/1.jpg и т. Д.), что я хотел бы, чтобы конечная точка api (GetPicture) могла служить.Разрешить вызов asp.net mvc api для доступа к файлам

api использует базовую аутентификацию с токеном в заголовке аутентификации.

На моей машине dev (vs2013, IIS Express) api отлично обслуживает файлы jpg.

Однако, когда я вызываю конечную точку api (api/v1/GetPicture/5) на тестовом/производственном сервере, я получаю http-код 500 (UnauthorizedAccessException) и сообщение об ошибке: «Доступ к пути xxx отказано".

Пользователь аутентифицируется в вызове api.

АНИ вызов:

GET https://app.domain.com/api/v1/GetPicture/5 HTTP/1.1 
Host: app.domain.com 
Content-Type: application/json; charset=utf-8 
Content-Length: 49 
Authorization: Token 506b38df-947e-45a8-b2a0-49aa01e9a6f9 

Конец апи точка:

[Route("GetPicture/{id:int}")] 
[HttpGet] 
public HttpResponseMessage GetPicture() 
{ 
    ... 
    ... 
    var result = new HttpResponseMessage(HttpStatusCode.OK); 
    var stream = new FileStream(path, FileMode.Open); 
    result.Content = new StreamContent(stream); 
    result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/jpeg"); 
    result.Content.Headers.ContentDisposition = 
     new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment") 
     { 
      FileName = file.FileName 
     }; 
    return result; 
    ... 
    ... 
} 

Я предполагаю: - что это проблема IIS или файловая система настройки безопасности или - что изображения должны быть перенесены в App_Data -?

ответ

0

Да. Идентификатор пула приложений IIS не будет иметь доступ к любому месту на жестком диске. поэтому вы можете переместить данные под свой c: \ inetpub или предоставить доступ к полномочиям идентификации пула приложений для доступа к каталогу. Вот ссылка на идентификатор пула приложений http://www.iis.net/learn/manage/configuring-security/application-pool-identities

+0

Папка/Files/является частью структуры папок веб-сайта, поэтому идентификатор пула приложений уже должен иметь доступ к файлам в папке – mortenma71

Смежные вопросы