2016-02-05 2 views
0

Я хочу создать каталог по сетевому пути из веб-службы WCF. Этот веб-сервис размещается под сайтом, использующим проверку подлинности Windows. Однако, когда я пытаюсь создать папку с «Directory.Create», я получаю отказ в доступе. Когда я проверяю «HttpContext.Current.User.Identity.Name», я могу видеть свою собственную учетную запись пользователя, но я думаю, что это не тот, который используется для создания папки, так как, когда я делаю «System.Environment.UserName», Я вижу другую ценность.ASP.NET Создать каталог с разрешениями текущего пользователя

Я попытался поместить «<identity impersonate="true" />» в главный web.config веб-сайта, но потом ничего не работает.

Итак, мой вопрос: возможно ли создать каталог, используя разрешения текущего пользователя?

Как точность, я вызываю webservice через AngularJS, и я настроил свой «$ httpProvider» для передачи учетных данных («$hp.defaults.withCredentials = true;»).

EDIT:

Я добавил «<identity impersonate="true" />» в web.config помещается в папку, которая содержит мой веб-сервиса, и теперь, «System.Environment.UserName» содержит правильные учетные данные, но все же, я думаю, доступ запрещен. Я попробовал ту же команду из консольного приложения, и она работает. Я действительно не понимаю ...

EDIT 2

Если я изменил элемент «идентичности» в «<identity impersonate="true" username="USERNAME" password="PASSWORD" />», то это работает, но я не хочу, чтобы заполнить эти поля. ..

Благодаря

ответ

0

Я предполагаю, что сетевая папка находится на другом сервере, вы либо будете иметь олицетворять учетные данные, которые имеют доступ к нему или кто AppPool запущен как будет иметь разрешения писать в эту папку.

Обычно у нас есть приложение, работающее как учетная запись домена в IIS. Вы можете адаптировать разрешения по своему усмотрению (при условии, что оба сервера находятся в одном домене, и вам не нужно хранить пароли таким образом, тот, кто управляет вашим IIS, будет обрабатывать это). Если сайту просто нужно писать (но не читать), вы можете дать ему права на запись, но не читать.

+0

Какова цель написания '' '", если он не решает проблему такого типа? – ssougnez

+0

Это должно пройти идентификацию от IIS. Чтобы гарантировать, что ваш код запущен, я напишу файл на сайт (если у него есть разрешения) и проверьте, кто является владельцем этого файла (потому что этот владелец будет тем же самым человеком, которого он пытается написать в отношении сетевой ресурс). Если вы видите что-то вроде «сетевой службы» или «iusr_blablabla», то мы знаем, что что-то пошло не так, но, по крайней мере, это дает нам направление для поиска. –

+0

Проверьте документацию здесь: https://msdn.microsoft.com/en-us/library/aa292118(v=vs.71).aspx. В нижней части находится снимок, который гласит: «Если приложение находится на UNC share, ASP.NET всегда олицетворяет токен IIS UNC для доступа к этому ресурсу, если не используется настроенная учетная запись. Если вы предоставляете явно настроенную учетную запись, ASP.NET использует эту учетную запись, предпочитая токен IIS UNC ». Это объясняет поведение, которое вы видите. –

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