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, чтобы увидеть, не установлен ли он где-нибудь неправильно.

Другие вопросы по тегам