iT邦幫忙

0

IIS的虛擬目錄 檔案路徑問題請教

  • 分享至 

  • xImage

您好:
使用某家公司的套件軟體 C#+ASP.NET+JQ

需求:上傳檔案後,要修改檔名的特殊字如「+」==>[+]全形
而正式環境 D:\WEBXX\WEBOOT
D:\WEBXX\WEBOOT\files
因為空間問題,所以利用IIS的功能建立了虛擬目錄: up,關連到SERVER端 F:\XX\upxx\

我在本機端 VS開發時,也在對應的目錄中
WEBOOT\files\建立一個實體 up 資料夾

C#後端程式,使用如下
string path = Directory.GetCurrentDirectory().Replace("NetServer", @"網站WEB容器\Files" );

用來取找到實際路徑

可是,我在開發端,可以正常上上傳,並找到路應\檔案, COPY一個新的檔名,刪掉舊檔名檔案
不過,放到正式IIS上,只能上傳檔案成功的虛擬目錄,但無法 COPY一個新的檔名,刪掉舊檔名檔案

是否為虛擬目錄 實體路徑問題,這要如何解決?
謝謝!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
I code so I am
iT邦高手 1 級 ‧ 2022-04-16 23:13:11
最佳解答

有幾種解決方案:

  1. 上傳存檔時即重新命名。
  2. web 中不用實體絕對路徑,使用相對路徑重新命名,並確定檔案已被釋放(unlocked)。
看更多先前的回應...收起先前的回應...
noway iT邦研究生 3 級 ‧ 2022-04-17 09:37:23 檢舉

您好: 謝謝!
1.因為套裝軟體,只能最後修改,所以1無效
2.有涵式可以 統一設定相對路徑嗎? 因為想讓開發與正是路徑設定一致
謝謝!

若使用套裝軟體,可自行寫一支非網頁的程式,使用 FileWatch 監控資料夾,並作檔案改名的工作。

noway iT邦研究生 3 級 ‧ 2022-04-17 15:34:55 檢舉

您好: 謝謝!
目前可能先以2的方案,該如何使用? 取得相對路徑,謝謝!

取得相對路徑不需要函數,假設IIS的虛擬目錄對應實體目錄為D:\WEBXX\WEBOOT,原檔在D:\WEBXX\WEBOOT\files,要move至D:\WEBXX\WEBOOT\up,就直接下
System.IO.File.Move("./files/a.txt", "./up/a.txt");

noway iT邦研究生 3 級 ‧ 2022-04-19 19:49:01 檢舉

您好:我試過用 相對路徑,但一樣沒有反應,單純試著刪掉原檔,也沒刪掉!
請問 1.是否權限問題? 該如何設定!
2.一般在正式環境,後端有辦法除錯嗎?

謝謝!

  1. 用 try/catch 寫錯誤訊息至 log,就會知道原因。
  2. 寫log, 可使用 log4net

我要發表回答

立即登入回答