顯示具有 IIS 標籤的文章。 顯示所有文章
顯示具有 IIS 標籤的文章。 顯示所有文章

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版)為例

<system.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 

 

 

 

2019年10月15日 星期二

ASP.NET -IIS與檔案上傳的安全設定

ASP.NET專題實務(I),博碩出版
** IIS 與 檔案上傳 (FileUPload)的安全設定 **
18–13–1 要求篩選(Request Filtering)
新版本IIS都提供了「要求篩選(Request Filtering)」的功能。但需要您手動安裝、增加這功能到IIS裡面。您的作業系統必須具備IIS才能安裝,例如Win10專業版或Windows Server。
18–13–2 限制執行
檔案上傳也可能是網站的一個大漏洞,如果有人把病毒或是木馬程式上傳並執行,那就糟了。有三個建議:
第一,除了前面說過最基本的「副檔名」檢驗以外,建議您也限制上傳目錄的權限,讓它只能讀寫卻無法執行。
第二,以下圖為例,針對「網站底下的子目錄」做設定,例如4_BigControl_Manual這個資料夾是用來存放上傳檔案的。千萬不允許它有「執行」的權限,以免有人上傳木馬程式或病毒後去執行它。當然,做了IIS任何設定以後,您最好重新測試一遍,以免影響到其他功能。
第三,Web Server也得安裝防毒軟體。如果真的被上傳病毒或是木馬程式,也能被檢查出來。大部分的防毒軟體,當對方上傳以後,通常會有即時掃描的功能。但仍建議每天在離峰時段進行全機掃描
在IIS 7.x版(Windows Server 2008)起有另一個設定「處理常式對應(Handle Mapping)」(如下圖,畫面上不太好找)。
針對「網站底下的子目錄」做設定,例如4_BigControl_Manual這個資料夾是用來存放上傳檔案的。千萬不允許它有「指令碼」\「執行」的權限,務必留白(如下圖,不打勾)。做了IIS任何設定以後,建議重新啟動網站服務並重新測試一遍,以免影響到其他功能。
以上來自 — ASP.NET 專題實務 (I) / 博碩出版

2019年5月30日 星期四

ASP.NET網站(WebSite)或專案(Project)部屬到Win10 IIS裡面

[ASP.NET 1080p] 將網站(WebSite)或專案(Project)部屬到IIS裡面



IIS 10 (Win10) 步驟非常簡單,預設值就能執行。

ASP.NET初學者在學習ASP.NET &程式「之前」......不必為此傷腦筋,先學好程式、做出程式成果以後,再來煩惱這件事。



影片內容在我的書籍「ASP.NET專題實務(I) 」有一章專文解說。


影片網址  https://youtu.be/xmmMJtShXto




影片網址  https://youtu.be/xmmMJtShXto

2017年4月21日 星期五

[FAQ]安裝SSL憑證的步驟,設定IIS編輯繫結(Edit Binding)for HTTPS網站

上一篇文章提到如何申請?....  http://mis2000lab.blogspot.tw/2017/04/faqssl-httpssop.html
這篇文章提到   如何安裝SSL憑證。


第一,請在命令提示字元(DOS指令視窗)
            或是在「開始」==>「執行」,輸入 cmd 就會出現

第二,請執行 mmc指令
     

第三,出現一個管理畫面
    
 
      
上圖有三個步驟,對應廠商給你的三個SSL憑證。
  • 請把第一個ROOT CA憑證,放在第一個位置裡面。請用滑鼠「右鍵」操作,將他匯入第一區。
  • 第二個 Chain 憑證請匯入第二區(英文是 Intermedia)
  • 最後一個 您自己網站的SSL憑證,請匯入第三區「個人」裡面。

應該就完成了。

建議您立刻把SSL憑證匯出,完整匯出成 pfx格式,就會把上面三者匯出在同一個檔案內,以後可以移植、保存。
      
 
      
       
注意!上面第二個選項,不要勾選!!
不要勾選「如果匯出成功及刪除私密金鑰」


理論上,您在第三區「個人」裡面看見的憑證,小圖示都有一個明顯的金鑰匙圖案。
沒有的話,可能就出錯了。 

如果出錯,請執行下面指令。

此時請使用指令來復原。===========================================================
(1).  刪除你剛剛安裝的SSL(在上方的MMC視窗裡面)
        並且把你的SSL憑證檔案  Copy到  C:\windows\system32\  目錄底下

(2). 請在命令提示字元(DOS指令視窗)
            或是在「開始」==>「執行」,輸入 cmd 就會出現

(3).  輸入指令   cd \windows\system32      (然後跳到你OS安裝的目錄下,預設都是 c:\windows)
(4).  輸入指令   certutil -addstore my "你的SSL憑證檔名"    此為安裝
(5).  上面指令成功以後,繼續輸入 certutil -repairstore my "你的SSL憑證檔名"           此為修復     
===========================================================


完成後,可以到 IIS裡面,將這個SSL憑證加入您的(或是 另一台)網站內
第一,點選您的網站,選擇「編輯繫結(Edit Binding)

第二,加入 HTTPS  就會看見 Port 443

第三,底下的「選擇(Select)」按鈕,可以看您的SSL憑證名稱
如果沒看見,代表出錯,請看上一個步驟,用指令來修復與重新安裝


講完了,好簡單。

  
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
寫信給我--  mis2000lab (at) yahoo.com.台灣  或是  school (at) mis2000lab.net
................   facebook社團   https://www.facebook.com/mis2000lab   ......................
................   Google+   https://plus.google.com/100202398389206570368/posts ........
................  YouTube (ASP.NET) 線上教學影片  http://goo.gl/rGLocQ

[FAQ]如何申請、設定SSL憑證 (HTTPS),簡單SOP步驟

網站申請了SSL憑證,可以透過 https (port 443),保障連線安全
步驟其實很簡單。
方法一,打電話給SSL憑證代辦公司,他們會立刻幫你辦好(把你教會)
                        講完了....夠簡單吧。
      
方法二,您需要準備這些資料。
1.  申請對外的 IP Address(固定IP、Public IP)
2.  申請您的網站 Domain Name,例如 www.abc.com
3.  您的SSL憑證生效日期?
     通常是一年、三年,買久一點會比較便宜。
      申辦速度很快,安裝也很簡單,提早兩週申請即可。最快兩天會辦好。
  
4. 在您的主機上面,建立一個網站,產生CSR文件(一個文字檔)
      如此一來,SSL公司才知道您的申請是真的,不是詐騙。
5. 拿到SSL憑證,安裝進去。
  
第四、五個步驟,對方會給你一份SOP,圖文並茂,自己就能安裝。
 裝不好的話,對方也會指導您安裝或是 Debug。
  通常更換SSL憑證,不需要重新開機、或是重新啟動Web服務,使用者幾乎沒感覺。

廣告一下,我都跟這家購買,
速度快、價格也便宜、服務很熱忱,
確定能用以後他們才請款(足感心A!)

這是他們的文件說明,很詳細。http://www.ssl.com.tw/Down/index.asp

不用擔心太多,花錢以後,很多事都一下子就做好了。
沒什麼設定步驟,安啦!
  
這家公司還提供「免費」的個人郵件SSL憑證

下一篇文章,教您如何安裝SSL(for IIS)
http://mis2000lab.blogspot.tw/2017/04/faqssliisedit-bindingfor-https.html


我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
寫信給我--  mis2000lab (at) yahoo.com.台灣  或是  school (at) mis2000lab.net
................   facebook社團   https://www.facebook.com/mis2000lab   ......................
................   Google+   https://plus.google.com/100202398389206570368/posts ........
................  YouTube (ASP.NET) 線上教學影片  http://goo.gl/rGLocQ

2014年1月28日 星期二

OutputCache在VS 2012/2013的錯誤 -- 張貼快取替換與IIS修改回應緩衝的Integrated不相容(Post cache substitution is not compatible with modules in the IIS integrated pipeline that modify the response buffers)

http://www.dotblogs.com.tw/mis2000lab/archive/2014/01/13/vs2013_iis_outputcache_substitution_error.aspx

OutputCache在VS 2012/2013的錯誤 -- 張貼快取替換與IIS修改回應緩衝的Integrated不相容(Post cache substitution is not compatible with modules in the IIS integrated pipeline that modify the response buffers)




執行以前的範例,在新版 VS 2013卻發現錯誤?


錯誤訊息:
 
 
If the application is hosted on IIS7 in Integrated Pipeline mode, an exception of type System.InvalidOperationException occurs with the following details:
 
Exception Details: System.InvalidOperationException: Post cache substitution is not compatible with modules in the IIS integrated pipeline that modify the response buffers.  Either a native module in the pipeline has modified an HTTP_DATA_CHUNK structure associated with a managed post cache substitution callback, or a managed filter has modified the response.
 

最主要是 Response.WriteSubstitution() 與 Substitution控制項引起


解決方法:
     請把您的網站、專案,修改成下面這樣。
    上圖的錯誤訊息,其實講得很清楚。


如果還無法解決,請重新開一個「空」網站來執行
也需做好上圖設定。


不過,程式裡面的「Response.WriteSubstitution() 與 Substitution控制項」仍無法運作

請看微軟的說明    http://support.microsoft.com/kb/2014472
To avoid the problem, choose one of the following options:
 
    Disable output caching on pages that are using substitution blocks.
 
OR
 
    Do not use the response filter module.


相關文章與解法(關閉 IIS的 Response Filter) 
 
                          
 
 
 
 




 
............................. 寫信給我,mis2000lab (at) yahoo.com.台灣........................................................
.............................   facebook社團   https://www.facebook.com/mis2000lab   ............................
.............................   Google+   https://plus.google.com/100202398389206570368/posts ..............