標籤

2021年1月30日 星期六

[IIS] HTTP 錯誤 500.21 - Internal Server Error

 

問題的來龍去脈

當您嘗試在 IIS 7.5 上執行 ASP.NET 應用程式(以 .NET Framework 4.0 為例)時,遇到【HTTP 錯誤 500.21-Internal Server Error,處理常式 "PageHandlerFactory-Integrated" 的模組清單中有錯誤的模組"ManagedPipelineHandler"】(如下圖)的錯誤時該如何排除,本文將提供可能的解決方案。

問題的發生原因

要讓 Windows Server 2008(含以上)得以執行 ASP.NET 4.0 應用程式,必須啟用 IIS 角色並安裝 .Net Framework 4.0,若您是先安裝 .NET Framework 4.0 獨立安裝程式再啟用 IIS 角色就可能遇到上述的錯誤訊息,原因在於IIS角色在啟用時並未更新現有的應用程式以使用 ASP.NET 4 版本的應用程式集區 ,以及在 IIS Metabase 中未更新傳統模式及 IIS 整合模式下 ASP.NET 4 的處理常式與指令對應,以至於出現上述的錯誤訊息。

問題的解決方法




1.Win + R 開啟執行視窗後輸入 cmd 按確定,開啟命令提示字元。

2.依據作業系統的位元數切換至相對應的目錄。 32 位元的作業系統請切換至【%systemroot%\Microsoft.NET\Framework】。64 位元的作業系統請切換至【%systemroot%\Microsoft.NET\Framework64】。

3.輸入【aspnet_regiis -i】後按 ENTER,下圖的為在 64 位元的作業系統下所做的範例




依照上述步驟即可於 IIS 7.5 上執行 ASP.NET 4.0 應用程式。以本文所舉的情境為例,建議要讓 ASP.NET 順利在 IIS 7.5 上執行的設定步驟如下:
1.啟用 IIS 角色,並選取 ASP.NET 角色服務。
2.安裝 .Net Framework 4.0 獨立安裝程式。

2021年1月27日 星期三

嘗試在資料庫5 中提取邏輯頁() 失敗。該邏輯頁屬於分配單元xxx而非xxx

症狀:
問題:MS SQL Server 資料庫損毀,需要修復才能維持穩定性和一致性。

原因:
MS SQL Server 資料庫、記錄和應用程式檔案的軟體損毀。

解法:
DBCC 是 Microsoft SQL Server 的原生工具,旨在檢查和修復 Microsoft SQL Server 資料庫。

詳見: https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

執行 DBCC CHECKDB 的步驟

開啟 SQL Server Management Studio
開啟 查詢視窗
輸入 DBCC CHECKDB [資料庫名稱] (如下圖)
檢查查詢結果底部附近,查看分配和一致性錯誤
如果結果中出現分配和一致性錯誤,資料庫應從備份還原,或使用 DBCC CHECKDB 執行資料庫修復。

使用 DBCC CHECKDB 執行資料庫修復 如下:

REPAIR_REBUILD:以下命令可讓資料庫處於可修復的模式。
複製以下命令,然後貼至輸入正確資料庫名稱的查詢工作階段:

USE Master;
GO

ALTER DATABASE 資料庫名稱
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

DBCC CHECKDB (資料庫名稱,REPAIR_REBUILD)
GO

ALTER DATABASE 資料庫名稱
SET MULTI_USER;
Go

REPAIR_ALLOW_DATA_LOSS:以下命令可執行資料庫修復,並可能導致數據遺失,無法完成修復程式。
複製以下命令,然後貼至輸入正確資料庫名稱的查詢工作階段:

USE Master;
GO

ALTER DATABASE 資料庫名稱
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

DBCC CHECKDB (資料庫名稱, REPAIR_ALLOW_DATA_LOSS)
GO

ALTER DATABASE 資料庫名稱
SET MULTI_USER;
Go

如果資料庫實體磁碟空間執行不足,以下命令會很有用。
複製以下命令,然後貼至輸入正確資料庫名稱的查詢工作階段:

USE Master;
GO

ALTER DATABASE 資料庫名稱
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

DBCC CHECKDB (資料庫名稱, REPAIR_REBUILD)
WITH ESTIMATEONLY;
GO

ALTER DATABASE 資料庫名稱
SET MULTI_USER;
Go

複製以下命令,然後貼至輸入正確資料庫名稱的查詢工作階段:

--Command below will run DBCC CHECKDB without using TEMDB and creating a DB snapshot.
--When not using TEMPDB with a DB snapshot all data will be checked in the live database not not a database snapshot.

USE Master;
GO

ALTER DATABASE 資料庫名稱
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

DBCC CHECKDB (資料庫名稱, REPAIR_REBUILD)
WITH TABLOCK;
GO

ALTER DATABASE 資料庫名稱
SET MULTI_USER;
Go

使用 DiskSpd 測試磁碟效能

  DiskSpd 是微軟創建的命令行磁碟測試工具。它結合了強大的IO工作負載定義來測量磁碟效能。由於它支援自由配置和調整參數,使其成為存儲效能測試、驗證和基準測試的理想工具。 步驟 1. 從 GitHub (說明) https://github.com/Microsoft/di...