Server.MapPath() пропускает один уровень
У нас есть приложение.Net, и у нас есть три точно такие же копии. Один для разработки на нашем сервере, тестовый и живой на сервере нашего клиента. Мы должны создать PDF-файлы на сервере и сохранить их в указанной папке. Он отлично работает на dev и тестовых приложениях, но не на live. Когда он должен сохранить файл, он перепрыгивает на одну папку вверх.
Некоторое время я играл с server.mappath и получил следующее: В живом приложении, если относительный путь содержит не "." или "..", то поднимается еще на один уровень (путь не содержит папку "LiveApplication"), но работает на других.
У вас есть идеи по этому поводу? Спасибо
Живое приложение:
xFileSystemDir:
../FileSpace/
Server.Mappath(xFileSystemDir):
C:\AppDir\FileSpace\
Server.Mappath("..\FileSpace"):
C:\AppDir\FileSpace
Server.Mappath("../FileSpace"):
C:\AppDir\FileSpace
Server.Mappath(xFileSystemDir & "Temp/" & xDir & "/" & PDFFileName):
C:\AppDir\FileSpace\Temp\PDF20130517-143114\Invoice.pdf
Server.Mappath(".")
C:\AppDir\LiveApplication\Script
Server.Mappath(".."):
C:\AppDir\LiveApplication
Тестовое приложение:
xFileSystemDir:
../FileSpace/
Server.Mappath(xFileSystemDir):
C:\AppDir\TestApplication\FileSpace\
Server.Mappath("..\FileSpace"):
C:\AppDir\TestApplication\FileSpace
Server.Mappath("../FileSpace"):
C:\AppDir\TestApplication\FileSpace
Server.Mappath(xFileSystemDir & "Temp/" & xDir & "/" & PDFFileName):
C:\AppDir\TestApplication\FileSpace\Temp\PDF20130517-143442\Invoice.pdf
Server.Mappath(".")
C:\AppDir\TestApplication\Script
Server.Mappath(".."):
C:\AppDir\TestApplication
Дерево физических папок на клиентском сервере:
c:\
AppDir\
TestApplication\
FileSpace\
Temp\ - here goes the new files
LiveApplication
FileSpace\
Temp\ - the new files should be created here
FileSpace\ - this folder should not exists, but the live app creates the new files here
Temp\
1 ответ
Похоже, ваш сайт работает в C:\AppDir, а не в C:\AppDir\LiveApplication. Вы изучили HttpRuntime.AppDomainAppPath, чтобы увидеть, не установлен ли он где-нибудь неправильно.