2026年5月14日 星期四

[研究]ASP.NET WebForm 網站下載.odt檔案失敗

[研究]ASP.NET WebForm 網站下載.odt檔案失敗

2025-05-13

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 20.2

就算 GCB允許了 .odt 仍是失敗。

下圖,測試機上

下圖,開發機上



********************************************************************************



HTTP 錯誤 404.3 - Not Found

因為網頁伺服器上設定的多用途網際網路郵件延伸標準 (MIME) 對應原則,而無法提供您要求的網頁。如果此網頁為指令碼,請新增處理常式,而且如果它是應該要下載的檔案,請新增 MIME 對應。

最有可能的原因:

  • 可能是缺少處理常式對應。根據預設,靜態檔案處理常式會處理所有內容。
  • 您嘗試使用的功能可能尚未安裝。
  • 並未針對網站或應用程式啟用適當的 MIME 對應 (警告: 使用者不應下載的內容,例如 .ASPX 網頁或 .config 檔,請勿為其建立 MIME 對應)。
  • 是否沒有安裝 ASP.NET。

解決方法:

  • 在 system.webServer/handlers 中:
    • 確定目前網頁的預期處理常式已對應。
    • 切記先決條件 (例如 runtimeVersion、pipelineMode、bitness),並比較這些條件與您應用程式集區的設定。
    • 切記所需處理常式行中的拼字錯誤。
  • 確認已安裝所要嘗試使用的功能。
  • 確認已啟用 MIME 對應,或使用命令列工具 appcmd.exe 新增網站的 MIME 對應。
    1. 若要設定 MIME 類型,可以使用下列語法: %SystemRoot%\windows\system32\inetsrv\appcmd set config /section:staticContent /+[fileExtension='string',mimeType='string']
    2. fileExtension 字串變數為副檔名,mimeType 字串變數則為檔案類型描述。
    3. 例如,要對副檔名為 ".xyz" 的檔案新增 MIME 對應: appcmd set config /section:staticContent /+[fileExtension='.xyz',mimeType='text/plain']
    警告: 務必先確認您的網頁伺服器需要此 MIME 對應,再將它新增至清單中。 設定檔案 (如 .CONFIG) 或動態指令碼處理網頁 (如 .ASP 或 .ASPX) 不應直接下載,且務必透過處理常式處理。其他檔案 (例如,資料庫檔案或用來儲存設定的檔案 .XML 或 .MDF) 有時會用來儲存設定資訊。啟用之前,務必先判定用戶端是否可以下載這些檔案類型。
  • 安裝 ASP.NET。
  • 建立追蹤規則以追蹤此 HTTP 狀態碼的失敗要求。如需針對失敗的要求建立追蹤規則的詳細資訊,請按一下 這裡

詳細錯誤資訊:

模組   StaticFileModule
通知   ExecuteRequestHandler
處理常式   StaticFile
錯誤碼   0x80070032
要求的 URL   https://(略).odt
實體路徑   D:\(略).odt
登入方法   匿名
登入使用者   匿名

詳細資訊:

如果所要求 URL 的副檔名屬於 MIME 類型,但是伺服器上未設定 MIME 類型,便會發生此錯誤。您可以為非動態指令碼處理網頁、資料庫或設定檔案的副檔名新增 MIME 類型。請使用處理常式處理這些檔案。請勿允許直接下載動態指令碼處理的網頁、資料庫或設定檔案。

檢視詳細資訊 »


ChatGPT (以下敝人尚未實際測試)

通常代表:

  • IIS 不認識 .odt
  • 沒有設定 MIME Type
  • IIS 不允許下載此副檔名

.odt 正確 MIME Type 通常是:

application/vnd.oasis.opendocument.text


IIS 解法

方法 1:IIS Manager 設定 MIME Type(建議)

進入:IIS Manager→ 網站→ MIME Types→ Add

新增:

副檔名 MIME Type

.odt application/vnd.oasis.opendocument.text

方法 2:Web.config

ASP.NET WebForm 常用。

在:

<system.webServer>

加入:


<staticContent> <mimeMap fileExtension=".odt" mimeType="application/vnd.oasis.opendocument.text" /> </staticContent>

完整範例:


<configuration> <system.webServer> <staticContent> <mimeMap fileExtension=".odt" mimeType="application/vnd.oasis.opendocument.text" /> </staticContent> </system.webServer> </configuration>

********************************************************************************

2026-05-14 補

測試成功,.odt 可以下載了。

(完)

沒有留言:

張貼留言