System.IO.FileInfo не может определить, существует ли файл на сервере на другом конце сети
Это мой код Visual Basic 2005 .NET:
Dim imgflnm as string = "c:\testfolder\testdoc.txt"
Dim fltotest As New System.IO.FileInfo(imgflnm)
Dim tsrslt As Boolean
tsrslt = fltotest.Exists
System.Web.HttpContext.Current.Response.Write("source file exists result=" & tsrslt & "<br/>")
Приведенный выше код возвращает tsrslt как true, когда он видит рассматриваемый файл на локальном диске - на том же диске, что и приложение. Но на подключенной букве диска он не видит файл, поэтому tsrslt оценивается как ложное.
Я пробовал следующее:
DNS-путь
\\DPATSERVER\testfolder\testdoc.txt
IP-путь
\\192.xxx.yyy.zz\testfolder\testdoc.txt
путь DNS на нестандартном диске
\\DPATSERVER\e\testfolder\testdoc.txt
Путь ip на нестандартном диске (как выше, используя ip вместо dns)
dns & ip на нестандартном диске, используя $ после буквы диска.
Ничто из вышеперечисленного не может увидеть файл на удаленном сервере. Мы ценим любые предложения.
1 ответ
Когда вы звоните на веб-сайт и используете System.IO.File.Exists, именно учетная запись IUSR фактически выполняет запрос файла.
По умолчанию для IIS используется локальная учетная запись для веб-сервера, а учетная запись не имеет разрешений для доступа к общему сетевому ресурсу, поскольку это локальная учетная запись, которая существует только на одном компьютере и не существует на другом компьютере.
Необходимо настроить пул приложений IIS для вашего веб-сайта, чтобы он выполнялся с использованием учетной записи пользователя домена, а затем дать этой учетной записи разрешение на общий сетевой ресурс. Если вы не находитесь в домене, создайте одного и того же пользователя на обеих машинах с одним и тем же паролем. Затем запустите IIS от имени этого пользователя.
Менее безопасный метод - предоставить всем доступ к общему сетевому ресурсу.
Настройка удостоверений пула приложений IIS
Пример:
Домен или сетевая учетная запись
- То же имя пользователя и пароль используются для доступа к любому компьютеру в той же сети. Если вы меняете пароль, он меняется для всех компьютеров.
Веб сервер
1.1 Измените пул приложений, чтобы использовать имя пользователя и пароль, которые вы используете для входа в систему (1.) или аналогичной учетной записи в той же сети. Обычно для этой цели вы создаете учетную запись в сети, которая имеет доступ только к определенным ресурсам в сети. Если вы предоставляете этому пользователю доступ ко всей сети, это означает, что ваша сеть теперь доступна из-за большой угрозы безопасности IIS.
Файловый сервер
1.2 Щелкните правой кнопкой мыши папку, которой вы делитесь, и перейдите на вкладку безопасности. Убедитесь, что пользователь (1.) имеет доступ к этой папке.
Локальная учетная запись
- Это существует только на 1 компьютере, вы можете создать того же пользователя на другом компьютере. Но если вы измените пароль на компьютере 1, он не изменит пароль на компьютере 2.
Веб сервер
2.1 Измените пул приложений, чтобы использовать имя пользователя и пароль, которые вы используете для входа в систему (2.) или учетную запись, созданную только для этого использования.
Файловый сервер
2.1 Создайте на этом компьютере точно такого же пользователя с теми же учетными данными (2.,2.1) Щелкните правой кнопкой мыши папку, которой вы делитесь, и перейдите на вкладку безопасности. Убедитесь, что пользователь (2.,2.1,2.2) имеет доступ к этой папке.
Менее безопасный метод
Файловый сервер
- Щелкните правой кнопкой мыши папку, которой вы делитесь, и перейдите на вкладку безопасности и предоставьте всем пользователям доступ к этой папке.