Как я могу копировать файлы с ASP.Net, используя Vista и IIS7? - PullRequest
0 голосов
/ 16 декабря 2008

У меня есть кнопка на веб-сайте, которая создает каталог и копирует файл. Я разработал его с помощью Visual Studio 2008, ASP.Net 3.5. Я использую Vista как свою ОС. Сайт использует идентификацию подражания.

Функциональность не работает («Доступ к пути XYZ запрещен»), когда:

  • Я запускаю сайт через IE, нажимая на локальный веб-сервер

Функциональность работает нормально, когда [примечание Visual Studio запускается с правами администратора]:

  • Я нажал на игру в Visual Studio
  • Я говорю, вид в браузере из Visual Studio
  • Я запускаю веб-сайт через IE, обращаясь к локальному веб-серверу, но запускаю IE с правами администратора
  • Я развернул сайт на другом веб-сервере (также Vista / IIS7)
  • Я изменяю FireFox для принятия встроенной аутентификации, затем получаю доступ через FireFox и localhost

Я никогда раньше не видел такого поведения, ранее команды типа File.Copy заботились только о том, чтобы права на копируемую папку были действительными и т. Д. (У меня есть Все, кто имеет полный контроль при попытке отладить эту ситуацию). Кажется вероятным, что проблема имеет права администратора или нет? Или войти в систему на машине, на которой он запущен?

Что здесь происходит? Почему он работает в среде разработки и развертывается на другой машине, но не работает при развертывании на моей собственной машине? Кажется очень странным, любая помощь будет оценена.

РЕДАКТИРОВАТЬ : Я добавил «Все» во все релевантные каталоги и предоставил этому пользователю полный доступ, поэтому проблем с разрешениями быть не должно?

Ответы [ 4 ]

2 голосов
/ 16 декабря 2008

ОК. Я нашел решение этой проблемы с учетом этих симптомов. Я не уверен на 100%, почему это работает (особенно потому, что оно отлично работает в FireFox и прекрасно работает в IE, если вы не подключаетесь локально), но следующее кажется обходным.

В IE выберите Сервис -> Свойства обозревателя -> Безопасность -> Надежные сайты -> Сайты и добавьте http://localhost в качестве доверенного сайта. Это позволяет вам использовать веб-сайт локально. Почему вам нужно делать это в IE, когда вы подключаетесь локально, а не в FireFox или IE, когда вы подключаетесь к другой машине, я не знаю. Но это, кажется, жизнеспособный обходной путь.

2 голосов
/ 16 декабря 2008

Скорее всего, пользователь, на котором в IIS выполняется олицетворенный поток, не имеет доступа к исходному файлу или месту назначения. Вы пытались сделать копию напрямую от имени этого пользователя? Когда вы запускаете IE от имени администратора или от имени VS от имени администратора, олицетворенный пользователь получает полные права от имени администратора.

[Редактировать - добавить ссылку]

Есть некоторая информация о подобной теме, идея использовать SysInternals была хорошей:

UnauthorizedAccessException с IIS7

2 голосов
/ 16 декабря 2008

Вы должны попытаться дать разрешение на изменение через asp.net

Вы можете найти несколько статей об этом, используя Google (ING).

0 голосов
/ 16 декабря 2008

Я предполагаю, что удостоверение, под которым работает ASP.Net, не имеет разрешений (NetworkService) или пользователь, используемый для анонимной проверки подлинности, имеет разрешение (IUSR)

...