2025年7月24日 星期四

VS2022 / VS2019 無法開啟 早期的舊專案 vdproj is incompatible

 早期的 VS 2008專案,無法在新版開啟,該如何解決? vdproj is incompatible

安裝套件 Microsoft Visual Studio Installer Project

資料來源 https://stackoverflow.com/questions/26028746/visual-studio-vdproj-is-incompatible

問題: VS2022無法開啟早期的舊專案 (.sln檔 ),這個專案是VS2008的,可能是 .NET 2.0~3.5的版本。

錯誤訊息 : vdproj is incompatible



1. 打開 Visual Studio 2017, 2019 or 2022

2. 上方 工具列(menu)

  • VS2017: Click on "Tools" -> Extension and Updates -> Online(瀏覽)
  •  
  • VS2019 or higher (VS2022) 如下圖: Click on "Extensions (延伸模組)" -> Manage Extensions(管理延伸模組) -> Online(瀏覽)
  • 提醒各位,這是針對「整個 Visual Studio開發工具的改變」,所以不是專案底下的 NuGet

3. 關鍵字,請輸入Type "Installer Project" on the search box

4. 請選擇並安裝這個套件  - Microsoft Visual Studio Installer Project

5. 完成後,務必 "重新啟動" Visual Stduio才能生效


資料來源 https://stackoverflow.com/questions/26028746/visual-studio-vdproj-is-incompatible

 

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程教學,遠距教學 (Web Form 約 51hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程教學,遠距教學 (ASP.NET MVC 約 140hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.tw  或  school (at) mis2000lab.net

 (1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A 

 (2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I 

[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm  。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b  


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

.........   facebook社團   https://www.facebook.com/mis2000lab   ......................

.........  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

2025年7月23日 星期三

IIS - 檔案上傳的限制(新版IIS需要設定兩個地方)fileupload limitation

 FAQ,但新版IIS需要設定兩個地方才會運作(開放檔案上傳的限制)

以Web.config 為例, .NET 4.x版(.NET Framework 4.x版)為例


以前只要設定一個地方即可

新版IIS需要設定兩個地方才行:

 

以Web.config 為例, .NET 4.x版(.NET Framework 4.x版)為例

<syste.web>

  <!-- 250 秒可執行時間長度,檔案限制 307 MB  ( Unit: Kilo Bytes。注意!!這裡的單位是KB = 307,200 KB) -->
   <httpRuntime targetFramework="4.8" enableVersionHeader="False" executionTimeout="250" maxRequestLength="307200" />

</system.web>

 

 <system.webServer> 

        <security>
           <requestFiltering>  <!--file upload limitation -->
               <!-- 300 秒可執行時間長度,檔案限制 307 MB ( 307,200,000 "Bytes"。 注意!跟上面的單位 "KB" 不一樣喔!) -->
               <requestLimits maxAllowedContentLength="307200000" maxUrl="6144" maxQueryString="3072" />
           </requestFiltering>
       </security>
  
  <!-- ********************************************************* -->
 </system.webServer> 

 

底下(第二個設定)可以在IIS裡面找到

IIS fileupload limitation (MIS2000 Lab.)

IIS fileupload limitation (MIS2000 Lab.)


但第一個設定,必須手動進入 Web.config設定檔修改。

以上是以 .NET 4.x版(.NET Framework 4.x版)為例

 


 

===================================================

如果是 ASP .NET Core MVC該如何處理?  (.NET Core / 開源 .NET / 開放原始碼 .NET )

=================================================== 

除了上面IIS的 Web.Config(如下),您仍要設定以外。或是透過 IIS管理畫面來調整(請參閱上面兩張圖片)

 <system.webServer> 

        <security>
           <requestFiltering>  <!--file upload limitation -->
               <!-- 300 秒可執行時間長度,檔案限制 307 MB ( 307,200,000 "Bytes"。 注意!檔案大小的單位!) -->
               <requestLimits maxAllowedContentLength="307200000" maxUrl="6144" maxQueryString="3072" />
           </requestFiltering>
       </security>
  
  <!-- ********************************************************* -->
 </system.webServer> 

 

ASP.NET Core MVC的「設定檔」修改如下。請特別注意一開始的「builder」關鍵字,

因為 Program.cs設定檔分成 : 上 / 下兩個部分,不要搞錯。

這些的設定是放在「上半部」

      // 如果不知道什麼是 Kestrel ,請看下面補充說明。 

       builder.WebHost.ConfigureKestrel(options =>
       {
           options.Limits.MaxRequestBodySize = 1073741824;   // 註解: 1GB。單位是 Bytes
       });

 

           builder.Services.Configure<FormOptions>(options =>
          {

             // 參考範例,檔案上傳大小,限制256 MB 
             //      options.MultipartBodyLengthLimit = 268435456;

              options.ValueLengthLimit = int.MaxValue;   // 後面的數值,請自己填入檔案大小的數字,單位是 Bytes. 
              options.MultipartBodyLengthLimit = int.MaxValue;
              options.MultipartHeadersLengthLimit = int.MaxValue;
          });

 

MVC的 控制器 (Controller)或是 動作 (Action) 裡面

     [HttpPost]
     [RequestSizeLimit(1073741824)]     // 註解: 1GB。單位是 Bytes

            // 完全取消限制,但真心 "不建議" 這樣做!  [DisableRequestSizeLimit] 
     public IActionResult Upload(IFormFile file)
     {
        // 處理檔案上傳
     }

 

註解與補充:(資料來源:CoPilot - AI)

Kestrel 是 ASP.NET Core "內建"的跨平台 Web 伺服器,用來處理 HTTP 要求。當你在 Windows、Linux 或 macOS 上開發 ASP.NET Core 應用程式時,Kestrel 是預設的伺服器。

– 它速度快、效能好,適合用於開發與生產環境。
– 在 Windows 上部署時,Kestrel 通常會搭配 IIS 使用。

當你在 Windows 上使用 IIS 發佈 ASP.NET Core 應用程式時,其實是這樣運作的:

– IIS 接收來自瀏覽器的請求。
– IIS 透過一個叫做 ASP.NET Core Module (ANCM) 的中介,把請求轉交給 Kestrel。
– Kestrel 處理請求,然後回傳結果給 IIS,再由 IIS 回傳給瀏覽器。
所以即使你「只用 IIS」,其實背後還是有 Kestrel 在運作。

 

 

IIS - 無法下載 .7z .iso .apk壓縮檔 - Cannot dowload .7z .iso .apk compressed file from IIS (application/octet-stream)

 這問題也是我第一次遇見,以前沒做過這種「檔案上傳、下載」為主的網站。所以沒經驗。

 

檔案 .pdf .zip .rar,只要在網頁上有超連結(網址、URL)

點選就能下載(如 .zip  .rar等壓縮檔)、或在瀏覽器上直接打開觀賞(如 PDF檔)

 

偏偏 .7z  .iso  .apk 這種壓縮檔,或附檔名 ( 副檔名 ),

IIS "預設"的狀態下 …… 不認識  @_@

 

所以必須 "手動" 加入(設定畫面的右邊,請選「新增」 --自己填寫並加入這個設定)

以 .7z檔案為例

.7z

application/octet-stream

註解:AI的回答是 -    在網路傳輸中,最適合表示「"未知的"二進位檔案」的 MIME 類型是 application/octet-stream。

                                   當瀏覽器收到這個類型時,它不會試圖去「顯示」這個檔案,而是會提示使用者「下載」它。這是一個非常安全且符合預期的行為。 


如果你怕打錯字,可以找一下

同一頁(同一畫面)裡面的  .rar,複製他的設定就好了。一模一樣。

IIS MIME - .7z file download (MIS2000 Lab.)

IIS MIME - .7z file download (MIS2000 Lab.)


 

感恩網友分享,謝謝您  

Windows IIS服务器.7z文件不能下载解决办法-CSDN博客

      https://blog.csdn.net/jhlovett/article/details/83428959 

让IIS7 支持 .iso .APK.7z .torrent .apk等文件下载的设置方法 - 知乎

      https://zhuanlan.zhihu.com/p/596110562