ASP.NET MVC 出現 HTTP Error 404.15 - Not Found

開發 ASP.NET MVC 網站,偶爾會遇到 HTTP Error 404.15 - Not Found 的錯誤,”印象中” 造成的原因有好幾個,每次都因為趕著要完成沒有刻意去紀錄,但沒搞清楚難保日後又遇到,就來釐清問題原因吧

錯誤訊息及畫面

  1. 錯誤訊息 - 英文

    • 訊息內容

      HTTP Error 404.15 - Not Found
      The request filtering module is configured to deny a request where the query string is too long.
              
      Most likely causes:
      Request filtering is configured on the Web server to deny the request because the query string is too long.
              
      Things you can try:
      Verify the configuration/system.webServer/security/requestFiltering/requestLimits@maxQueryString setting in the applicationhost.config or web.config file.
      
    • 錯誤截圖 1error

  2. 錯誤訊息 - 中文

    • 訊息內容

      HTTP 錯誤 404.15 - Not Found
      要求篩選模組設定為拒絕查詢過長的要求。
              
      最有可能的原因:
      因為查詢字串過長,網頁伺服器上的要求篩選已設定為拒絕要求。
              
      解決方法:
      確認 applicationhost.config 或 web.config file 檔案中的 configuration/system.webServer/security/requestFiltering/requestLimits@maxQueryString 設定.
      
    • 錯誤截圖 2errorzh

問題原因

驗證設定不正確造成頁面一直 redirect

可能的解決方式

  1. 檢查登入頁的驗證

    • 確認 Action 是允許匿名 [AllowAnonymous]

      3login

  2. 檢查是否允許匿名驗證

    • 開發環境

      1. 專案右鍵

        4rightclick

      2. Anonymous Authentication –> Enable

        5enableanonymous

    • IIS

      1. 網站 –> Authentication

        6iisauth

      2. Anonymous Authentication –> Enable

        7enabliisauth

  3. 停用 OWIN 啟始探索

    • 在 web.config 加上停用設定

      <add key="owin:AutomaticAppStartup" value="false"/>
      

參考資料

  1. New Asp.Net MVC5 project produces an infinite loop to login page