首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ASP.NET 網站部署至服務器後 404 錯誤:路徑映射與虛擬目錄配置排查

     編輯:程式設計綜合問答

現象:本地運行正常,部署到 IIS 服務器後登錄跳轉報 404。

常見原因排查清單

  1. 虛擬目錄/應用程式池配置:
    網站是否作為**應用程式**運行 (而非虛擬目錄)?
    IIS 中右鍵網站/目錄 → 「轉換為應用程式」。應用程式池 .NET 版本匹配 (v4.0/v2.0)。
  2. 路徑硬編碼:
    代碼中是否使用絕對物理路徑 (如 C:\Project\...) 或假設根目錄為 /?
    → 全面改用相對路徑 ~/ (Server.MapPath) 或 Request.ApplicationPath。
  3. 默認文檔缺失:
    IIS 「默認文檔」未包含 Default.aspx / Login.aspx,導致訪問目錄 404。
  4. URL 重寫/路由配置:
    web.config 中 <system.webServer><rewrite> 或 RouteConfig 規則在服務器環境不生效 (需安裝 URL Rewrite 模組、權限)。
  5. 權限問題:
    應用程式池標識 (ApplicationPoolIdentity/NetworkService) 無權讀取網站目錄 / 數據庫文件 / 上傳目錄。
    → 授予 IIS_IUSRS 讀寫權限。
  6. HTTP 錯誤頁面攔截:
    <httpErrors existingResponse="PassThrough" /> 確保 ASP.NET 錯誤不被 IIS 攔截。

快速定位步驟

  1. 瀏覽器 F12 Network 面板查看 404 請求的 **完整 URL**。
  2. 對比本地正常 URL,差異在哪段 (域名/虛擬目錄/控制器/動作)。
  3. IIS 日志 (C:\inetpub\logs\LogFiles\W3SVC1) 查看 sc-status=404 的 cs-uri-stem。
  4. 在服務器本地瀏覽器訪問 https://localhost/... 排除防火牆/代理因素。

典型修正示例

<!-- web.config 確保路由模組運行 -->
<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <remove name="UrlRoutingModule"/>
    <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule" />
  </modules>
  <handlers>
    <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler" />
  </handlers>
</system.webServer>

核心策略:**對比本地與服務器請求 URL 差異,修正虛擬目錄層級、路由規則、權限與默認文檔。**

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved