Group 13172486 Ответов: 3

Как исправить ошибку "доступ к пути запрещен" в размещенном приложении в IIS


Мое приложение включает в себя удаление файла и перемещение вновь созданного файла в путь к удаленному файлу. Он правильно работает, когда я запускаю его локально, я разместил это приложение в своем локальном iis, но он выдает мне ошибку, когда дело доходит до функции удаления файла.

сообщение об ошибке:
Доступ к пути "путь к файлу" запрещен.

Что я уже пробовал:

1)я добавил идентификатор IIS_IUSRS с доступом FullControl для свойства File security.
2) включил просмотр каталогов на моем локальном сервере iis.

но не повезло. Я получаю ту же ошибку. Пожалуйста, предложите мне что-нибудь. Заранее спасибо.

CHill60

Поделитесь кодом, который вы используете

Group 13172486

Частная функция GenerateScripts (_latestFXRates As RateExtract) Как Логическое
Dim fileName As String = Nothing
Dim updatedScriptFilePath как строка
Dim FileInfo как IO.FileInfo
Dim FileAcl Как Новая Файловая Безопасность

- Попробуй
Dim fileEntries As String () = каталог.Заражен(tfsDirectoryName)
- Обработайте список файлов, найденных в каталоге.
Для каждого имени файла в fileEntries

FileInfo = новый ввод-вывод.FileInfo(имя файла)

Если FileInfo.Тогда Это Просто
FileAcl.AddAccessRule (New FileSystemAccessRule("IIS_IUSRS", FileSystemRights.FullControl, AccessControlType.Позволять))
FileInfo.SetAccessControl(FileAcl)
Конец, Если
Если имя файла.Содержит ("Step1_Backup_all_tables. sql") Затем

updatedScriptFilePath = UpdateBackUpAllTables(имя файла)
MoveTheChangesToTFS(имя файла, updatedScriptFilePath)

Конец, Если
Конечная Функция

Private Sub MoveTheChangesToTFS(fileName As String, updatedScriptFilePath As String)

Файл.Delete (fileName) -- & gt; получение ошибки в этот момент
Файл.Move(updatedScriptFilePath, fileName)

Конец Подводной Лодки


CHill60

См. решение 2 - какова ценность updatedScriptFilePath

Group 13172486

он содержит путь к файлу, откуда он должен получить новый файл

CHill60

Об этом я и сам догадывался. Мой вопрос был таков: "какова ценность?.."

Group 13172486

C:\Users\318960507\Source\Workspaces\LS00\Database\SQL Скрипты\\Step1_Backup_all_tables FXRates.в SQL

и я получаю доступ к пути 'C:\Users\318960507\Source\Workspaces\LS00\Database\SQL Scripts\FXRates\Step1_Backup_all_tables. sql' отклоняется как ошибка.

CHill60

Как было объяснено в решении 2, вы не можете получить доступ к диску C: - сервер вообще не имеет доступа к клиентскому оборудованию.

Group 13172486

Я изменил местоположение с C:/ на другой раздел (F:/), но все равно получаю ту же ошибку. Я пытаюсь удалить файл в проводнике управления версиями TFS, который отлично работает локально, только когда он проходит через IIS, я получаю эту ошибку отказа в доступе. Есть ли у вас какие-либо идеи, нужно ли нам иметь разрешение для каких-либо конкретных пользователей или групп, поскольку у нас есть IIS_IUSRS для веб-сайта приложения в IIS?

3 Ответов

Рейтинг:
0

Dave Kreskowiak

Это будет выглядеть так, как будто вы предоставляете разрешения самим файлам, когда вы должны предоставлять разрешения папке, в которой находятся файлы.

Как уже было сказано ранее, вы должны создать учетную запись пользователя для запуска пула приложений, в котором размещен ваш сайт. Этому идентификатору должны быть предоставлены разрешения делать все, что нужно коду, с папкой, содержащей файлы, с которыми вы работаете.

Эти разрешения не должны предоставляться в коде вашего веб-сайта. Они должны быть настроены при развертывании приложения на сервере.


Рейтинг:
0

OriginalGriff

Начните с использования отладчика - или протоколирования, если вы получаете это только в рабочей среде, - чтобы точно узнать, что такое путь, а затем посмотрите, что требует разрешений.

Но я предполагаю, что вы пытаетесь получить доступ к клиентскому оборудованию и удалить / переместить на него файл. Это не сработает - кажется, в разработке, потому что клиент и сервер-это один и тот же компьютер, но в производстве это не так, и сервер (на котором выполняется ваш VB-код) вообще не имеет доступа к клиентскому оборудованию, поэтому вы получаете сообщение об ошибке.
Однако для начала важно выяснить фактический путь.


Group 13172486

Я изменил местоположение с C:/ на другой раздел, но все равно получаю ту же ошибку. Я пытаюсь удалить файл в проводнике управления версиями TFS, который отлично работает локально, только когда он проходит через IIS, я получаю эту ошибку отказа в доступе. Есть ли у вас какие-либо идеи, нужно ли нам иметь разрешение для каких-либо конкретных пользователей или групп, поскольку у нас есть IIS_IUSRS для веб-сайта приложения в IIS?

Рейтинг:
0

ZurdoDev

Я бы предложил вам изменить идентификатор пула приложений в IIS, чтобы использовать локальную учетную запись, которой вы предоставляете достаточные разрешения, а не встроенную, как вы уже сделали. Просто создайте новую учетную запись и дайте ей разрешения.

Также убедитесь, что вы не используете тег Impersonate в файле Web.Config.


Group 13172486

Спасибо за предложение...Я дам попробовать