2024年5月28日 星期二

[研究]System.Runtime.InteropServices.COMException: 功能錯誤。 (發生例外狀況於 HRESULT: 0x80070001)

[研究]System.Runtime.InteropServices.COMException: 功能錯誤。 (發生例外狀況於 HRESULT: 0x80070001)

2024-05-27

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

********************************************************************************


System.Runtime.InteropServices.COMException: 功能錯誤。 (發生例外狀況於 HRESULT: 0x80070001)
Generated: Sat, 25 May 2024 20:26:57 GMT

System.Web.HttpUnhandledException (0x80004005): 已發生類型 'System.Web.HttpUnhandledException' 的例外狀況。 
---> System.Web.HttpException (0x80004005): 與遠端主機通訊時發生錯誤。錯誤碼為 0x80070001。 
---> System.Runtime.InteropServices.COMException (0x80070001): 功能錯誤。 (發生例外狀況於 HRESULT: 0x80070001)
   於 System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result, Boolean throwOnDisconnect)
   於 System.Web.Hosting.IIS7WorkerRequest.ReadEntityCoreSync(Byte[] buffer, Int32 offset, Int32 size)
   於 System.Web.HttpRequest.GetEntireRawContent()
   於 System.Web.HttpRequest.FillInFormCollection()
   於 System.Web.HttpRequest.EnsureForm()
   於 System.Web.HttpRequest.get_Form()
   於 System.Web.HttpRequest.get_HasForm()
   於 System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull)
   於 System.Web.UI.Page.DeterminePostBackMode()
   於 System.Web.UI.Page.<ProcessRequestMainAsync>d__523.MoveNext()
   於 System.Web.UI.Page.HandleError(Exception e)
   於 System.Web.UI.Page.<ProcessRequestMainAsync>d__523.MoveNext()
--- 先前擲回例外狀況之位置中的堆疊追蹤結尾 ---
   於 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   於 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   於 System.Web.Util.WithinCancellableCallbackTaskAwaitable.WithinCancellableCallbackTaskAwaiter.GetResult()
   於 System.Web.UI.Page.<ProcessRequestAsync>d__515.MoveNext()
--- 先前擲回例外狀況之位置中的堆疊追蹤結尾 ---
   於 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   於 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   於 System.Web.UI.Page.<ProcessRequestAsync>d__554.MoveNext()
--- 先前擲回例外狀況之位置中的堆疊追蹤結尾 ---
   於 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   於 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   於 System.Web.TaskAsyncHelper.EndTask(IAsyncResult ar)
   於 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   於 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
   於 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

********************************************************************************

ChatGPT

這段錯誤訊息指出在 ASP.NET WebForm 應用程式中發生了一個未處理的例外狀況,具體來說是一個 COM 例外。以下是對這個錯誤訊息的詳細解釋:

錯誤訊息解析

1.System.Runtime.InteropServices.COMException: 功能錯誤。 (發生例外狀況於 HRESULT: 0x80070001)

  • COMException:這是一個 COM(Component Object Model)例外,表示在與 COM 物件交互時發生錯誤。
  • HRESULT: 0x80070001:這是一個錯誤代碼。0x80070001 通常表示 "Incorrect function"(功能錯誤),可能是由於無法訪問某個 COM 組件或其方法。
2.System.Web.HttpUnhandledException (0x80004005): 已發生類型 'System.Web.HttpUnhandledException' 的例外狀況。
  • HttpUnhandledException:這是一個 ASP.NET 特有的例外,表示有未處理的例外發生,並且該例外沒有被應用程式中的任何代碼捕獲。
  • 0x80004005:這是一個常見的錯誤代碼,表示一般性錯誤("Unspecified error")。
3.---> System.Web.HttpException (0x80004005): 與遠端主機通訊時發生錯誤。錯誤碼為 0x80070001。
  • HttpException:這是由 ASP.NET 拋出的例外,表示在處理 HTTP 請求時發生錯誤。
  • 錯誤碼為 0x80070001:這再次提到之前的 COM 錯誤代碼。
4.---> System.Runtime.InteropServices.COMException (0x80070001): 功能錯誤。 (發生例外狀況於 HRESULT: 0x80070001)

  • 這部分詳細說明了最初的 COM 例外,並指明問題的根源。


錯誤可能的原因及解決方法

1.與 COM 組件的互操作問題:

  • 這種錯誤通常與應用程式試圖調用某個 COM 組件或其方法,但由於某些原因(例如權限問題、組件未註冊或組件版本不匹配)導致調用失敗。

2.解決方法:

  • 檢查 COM 組件:確認應用程式使用的 COM 組件已正確註冊並可用。
  • 檢查權限:確保應用程式具有調用該 COM 組件所需的所有權限。
  • 更新或修復 COM 組件:如果組件存在版本不匹配或已損壞,可能需要重新安裝或更新該組件。
  • 查看應用程式配置:檢查 web.config 文件中的配置,確保配置正確無誤。
  • 日誌記錄:添加更多的日誌記錄以便在問題再次發生時能夠捕獲更多的調試信息。

這些步驟應該能幫助你找出並解決這個錯誤的根本原因。如果問題持續存在,可能需要進一步調試和分析具體的應用程式代碼及其與外部組件的交互。

********************************************************************************

(完)

相關

[研究]Opentext Fortify SCA 24.2.0 釋出 (23.2 => 24.2)

[研究]Opentext Fortify SCA 24.2.0 釋出 (23.2 => 24.2)

2024-05-28

以前 Fortify Static Code Analyzer 上半年是 xx.1.x 版,下半年是 xx.2.x 版;

例如 2023年年中左右釋出 23.1.0版,如果之後有 hotfix可能就是 23.1.1、23.1.2、、、;

 2023年年底左右釋出 23.2.0版,如果之後有 hotfix可能就是 23.2.1、23.2.2、、、;

沒想到這次23.2直接跳 24.2了。


(完)


2024年5月24日 星期五

[研究]Windows Server 2025 Preview 繁體中文版安裝

[研究]Windows Server 2025 Preview 繁體中文版安裝

2024-05-24

MSDN 上開始提供 Windows Server 2025 Preview DVD iso 了,是 2024-05-22 釋出。

zh-tw_windows_server_2025_preview_x64_dvd_9b147dcd.iso

5.08 GB (5,456,539,648 位元組)


(下圖)安裝失敗,後來發現 iso 才 1.5 GB,可能下載中途不明原因中斷了,重新下載的安裝就正常了

























(完)

[研究]ASP.NET+SQL Server,System.InvalidOperationException: 已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值。

[研究]ASP.NET+SQL Server,System.InvalidOperationException: 已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值。

2024-05-17

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

********************************************************************************

System.InvalidOperationException: 已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值。

System.InvalidOperationException: 已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值。
Generated: Wed, 22 May 2024 11:36:49 GMT

System.Web.HttpUnhandledException (0x80004005): 已發生類型 'System.Web.HttpUnhandledException' 的例外狀況。 ---> System.InvalidOperationException: 已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值。
   於 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   於 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   於 System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
   於 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
   於 System.Data.SqlClient.SqlConnection.Open()
   於 CSC.index.FixGameCreatDate() 於 D:\Git\WebApplication1\Solution1\WebApplication1\index.aspx.cs: 行 160
   於 CSC.index.Page_Load(Object sender, EventArgs e) 於 D:\Git\WebApplication1\Solution1\WebApplication1\index.aspx.cs: 行 15
   於 System.Web.UI.Control.OnLoad(EventArgs e)
   於 System.Web.UI.Control.LoadRecursive()
   於 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   於 System.Web.UI.Page.HandleError(Exception e)
   於 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   於 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   於 System.Web.UI.Page.ProcessRequest()
   於 System.Web.UI.Page.ProcessRequest(HttpContext context)
   於 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   於 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
   於 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)


********************************************************************************

使用中,並已達共用集區大小的最大值。

ChatGPT

你遇到的 System.InvalidOperationException 錯誤訊息表示你的應用程式在連接到 SQL Server 時,超過了連接逾時設定。在連接池中已無可用的連接,而所有的連接都被佔用,並且已達到連接池大小的最大值。

可能的原因

1.連接未正確關閉:你可能有未釋放的資料庫連接。確保每次開啟的連接都被正確關閉和釋放回連接池。

2.連接池大小設置過小:連接池的大小設置過小,無法滿足應用程式的需求。

3.應用程式對資料庫的需求過高:應用程式對資料庫的連接需求超出了目前連接池大小的設定。


解決方法

1.確保連接被正確關閉:使用 using 語句來確保連接被正確關閉。

using (SqlConnection conn = new SqlConnection(connectionString))
{
    conn.Open();
    // 執行資料庫操作
} // 這裡會自動關閉連接


2.調整連接池大小:在連接字串中增加 Max Pool Size 的設定。例如:

string connectionString = "Data Source=server;Initial Catalog=database;User ID=username;Password=password;Max Pool Size=100;";

3.優化資料庫查詢:優化查詢,確保查詢執行時間最短化,減少連接持續時間。

4.檢查資源洩漏:確認應用程式中是否有資源洩漏,導致連接未正確釋放。


具體例子

確保正確釋放連接:

public void ExecuteQuery()
{
    string connectionString = "your_connection_string_here";
    
    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        conn.Open();
        // 你的查詢和操作
        using (SqlCommand cmd = new SqlCommand("SELECT * FROM YourTable", conn))
        {
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    // 處理資料
                }
            }
        }
    } // 這裡會自動釋放連接
}

調整連接池大小

調整你的連接字串來增加 Max Pool Size,例如:

string connectionString = "Data Source=server;Initial Catalog=database;User ID=username;Password=password;Max Pool Size=200;";

監控與診斷

1.使用 SQL Server Profiler 或 Activity Monitor 來監控當前連接的使用情況。

2.分析應用程式日誌 來確保沒有過多的長時間持有的連接。

這些步驟應該能夠幫助你解決 System.InvalidOperationException 連接逾時的錯誤。確保正確管理和釋放連接是避免此類問題的關鍵。

********************************************************************************

連接池 預設值多少? 最大值多少?

ChatGPT

在 ADO.NET 中,連接池的預設值和最大值如下:

連接池的預設值

最大連接池大小 (Max Pool Size):預設值是 100。

最小連接池大小 (Min Pool Size):預設值是 0。

這意味著,除非在連接字串中明確設定,連接池最多可以包含 100 個連接。

連接池的最大值

最大值 (Max Pool Size):理論上可以設定到非常高的值,但這取決於系統資源和 SQL Server 的配置。設定過高的值可能會導致系統資源耗盡(例如,內存和 CPU 負載過高)。

設定連接池大小

你可以在連接字串中通過 Max Pool Size 和 Min Pool Size 來設定連接池的大小。例如:

string connectionString = "Data Source=server;Initial Catalog=database;User ID=username;Password=password;Max Pool Size=200;Min Pool Size=10;";

這個設定將最大連接池大小設為 200,最小連接池大小設為 10。


調整連接池大小的建議

1.根據應用需求進行調整:根據你的應用程式的連接需求和併發量來調整 Max Pool Size。

2.監控和測試:通過監控和壓力測試來確定最佳的連接池大小設置。

3.避免過大或過小的值:設置過大可能會導致系統資源耗盡,設置過小可能會導致連接耗盡錯誤。

通過正確管理和配置連接池,可以提高應用程式的性能和穩定性。

********************************************************************************

Copilot

這個錯誤訊息表示已經超過連接逾時的設定。在取得集區連接之前,等待的時間已經超過了預設的時間。可能的原因有幾個:

  1. 連線逾時:執行主控台應用程式時,目前的使用者對資料庫沒有存取權限,因此無法建立連線。請確認執行主控台應用程式的使用者是否具有正確的資料庫存取權限。
  2. CommandTimeout 設定過小:如果你使用的是 Entity Framework 或 ADO.NET,預設的 CommandTimeout 是 30 秒。你可以調整這個時間,例如改大一點,以避免連線逾時的問題。
  3. SQL 效能問題:如果查詢的資料量很大,或者沒有使用到適當的索引,也可能導致連線逾時。你可以檢查是否有適當的索引,並優化 SQL 效能。
  4. 連線池大小不足:連線池是用來管理資料庫連線的,預設大小是 100。如果同一時間有大量連線進來,可能會造成連線池爆滿,出現逾時的錯誤訊息。你可以調整連線池的大小,例如增加到更大的數值。

https://ithelp.ithome.com.tw/questions/10212631

https://dotblogs.com.tw/rainmaker/2016/03/30/115341

https://dotblogs.com.tw/CHIs_ITNote/2021/01/28/170805

********************************************************************************

(完)

相關

[研究][ASP.NET]找不到網路路徑。建立連接至 SQL Server 時,發生網路相關或執行個體特定的錯誤。
https://shaurong.blogspot.com/2024/05/aspnet-sql-server.html

[研究]ASP.NET+SQL Server,System.InvalidOperationException: 已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值。
https://shaurong.blogspot.com/2024/05/aspnetsql-serversysteminvalidoperatione.html

[研究][ASP.NET]找不到網路路徑。建立連接至 SQL Server 時,發生網路相關或執行個體特定的錯誤。

[研究][ASP.NET]找不到網路路徑。建立連接至 SQL Server 時,發生網路相關或執行個體特定的錯誤。

2024-05-23

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

********************************************************************************

'/' 應用程式中發生伺服器錯誤。

找不到網路路徑。

描述: 在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。

例外狀況詳細資訊: System.ComponentModel.Win32Exception: 找不到網路路徑。

原始程式錯誤:

在執行目前 Web 要求期間,產生未處理的例外狀況。如需有關例外狀況來源與位置的資訊,可以使用下列的例外狀況堆疊追蹤取得。


堆疊追蹤:

[Win32Exception (0x80004005): 找不到網路路徑。]

[SqlException (0x80131904): 建立連接至 SQL Server 時,發生網路相關或執行個體特定的錯誤。找不到或無法存取伺服器。確認執行個名稱是否正確,以及 SQL Server 是否設定為允許遠端連線。 (provider: Named Pipes Provider, error: 40 - 無法開啟至 SQL Server 的連接)]
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +353
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +118
   System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +268
   System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +315
   System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +128
   System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +265
   System.Data.SqlClient.SqlConnection.Open() +133
   System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +182
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +180
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +123
   System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +2947
   System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +26
   System.Web.UI.WebControls.ListView.PerformSelect() +126
   System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +134
   System.Web.UI.WebControls.ListView.CreateChildControls() +81
   System.Web.UI.Control.EnsureChildControls() +107
   System.Web.UI.Control.PreRenderRecursiveInternal() +58
   System.Web.UI.Control.PreRenderRecursiveInternal() +227
   System.Web.UI.Control.PreRenderRecursiveInternal() +227
   System.Web.UI.Control.PreRenderRecursiveInternal() +227
   System.Web.UI.Control.PreRenderRecursiveInternal() +227
   System.Web.UI.Control.PreRenderRecursiveInternal() +227
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3671

********************************************************************************

ChatGPT

這表示應用程序在嘗試連接到 SQL Server 時遇到了一些問題。這些問題通常與網絡配置、SQL Server 的設置或權限有關。以下是可能的原因和解決方法:

可能的原因

1.SQL Server 服務沒有啟動:確認 SQL Server 服務正在運行。你可以使用 SQL Server Configuration Manager 或 Windows 服務管理器檢查。

2.SQL Server 執行個體名稱錯誤:檢查連接字符串中的 SQL Server 執行個體名稱是否正確。尤其是使用命名實例時,格式應該是 ServerName\InstanceName。

3.網絡配置問題:確認 SQL Server 的防火牆設置允許 TCP/IP 連接。SQL Server 默認使用 TCP 1433 端口,你需要確保此端口沒有被防火牆阻擋。

4.SQL Server 允許遠程連接:確認 SQL Server 配置允許遠程連接。這可以在 SQL Server Management Studio 中設置,路徑是:右鍵 SQL Server 執行個體 -> 屬性 -> 連接 -> 允許遠程連接到此服務器。

5.連接字符串錯誤:檢查 Web.config 或 App.config 中的連接字符串,確保格式和參數正確。例如:

<connectionStrings>

    <add name="MyDBConnection" connectionString="Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;" providerName="System.Data.SqlClient" />

</connectionStrings>

6.權限問題:確認用於連接的 SQL Server 賬戶有適當的權限。嘗試使用 SQL Server Management Studio 直接連接到數據庫,看看能否成功。


解決步驟

1.確認 SQL Server 服務是否啟動:在伺服器上檢查 SQL Server 服務狀態,並啟動相關服務(如 SQL Server Browser)。

2.檢查防火牆設置:在伺服器防火牆中,允許 SQL Server 使用的端口(默認是 TCP 1433)。確保 SQL Server Browser 服務允許在 UDP 1434 端口上運行。

3.確認連接字符串:檢查並更新應用程序的連接字符串,確保使用正確的伺服器地址、數據庫名、用戶名和密碼。

4.檢查 SQL Server 配置:在 SQL Server Management Studio 中,右鍵點擊伺服器 -> 屬性 -> 連接,確認“允許遠程連接到此服務器”已勾選。

5.測試直接連接:使用 SQL Server Management Studio 嘗試使用相同的連接字符串參數進行連接,這樣可以幫助確定問題是否出在應用程序上。

6.查看錯誤日志:查看 SQL Server 錯誤日志和 Windows 事件查看器,可能會有更多詳細的錯誤信息幫助排查問題。

通過以上步驟,你應該能夠找出並解決連接到 SQL Server 的問題。如果問題仍然存在,請提供更多具體的錯誤訊息和配置細節,以便進一步診斷。

********************************************************************************

因為系統平時正常使用,偶而收到 Elmah Email通知發生此事,不理它,不定時又自動正常,懷疑不是上面所提各種問題,比較懷疑是效能問題,VM效能?網路效能?防火牆效能?、、、等。

(完)

相關

[研究][ASP.NET]找不到網路路徑。建立連接至 SQL Server 時,發生網路相關或執行個體特定的錯誤。
https://shaurong.blogspot.com/2024/05/aspnet-sql-server.html

[研究]ASP.NET+SQL Server,System.InvalidOperationException: 已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值。
https://shaurong.blogspot.com/2024/05/aspnetsql-serversysteminvalidoperatione.html

[研究]TreeSize Free 4.7.3 開始不再支援 Windows Server

[研究]TreeSize Free 4.7.3 開始不再支援 Windows Server

2024-05-24

升級 TreeSize Free 從 4.7.2 到 4.7.3 時發現




TreeSize Free

https://www.jam-software.com/treesize_free/changes.shtml

The use of TreeSize Free on a Windows server is no longer supported. We recommend TreeSize Professional.

不再支援在 Windows Server 上使用 TreeSize Free。 我們推薦 TreeSize Professional。

(完)

相關

WinDirStat 1.1.2 顯示磁碟空間佔用情況 (開源、免費、可商業使用)
https://windirstat.net/
https://github.com/windirstat/windirstat/blob/master/LICENSE.md

SpaceSniffer, find lost disk space the easy way.
http://www.uderzo.it/main_products/space_sniffer/
https://www.azofreeware.com/2009/05/spacesniffer-1040.html

JDiskReport
https://www.jgoodies.com/freeware/jdiskreport/

DiskSavvy - Disk Space Analyzer (免費版有些限制)
https://www.disksavvy.com/disksavvy_product_versions.html
https://www.disksavvy.com/
https://www.azofreeware.com/2020/11/disksavvy.html

Folder Size
https://foldersize.sourceforge.net/
https://www.azofreeware.com/2007/01/folder-size-23.html#google_vignette

WizTree - The Fastest Disk Space Analyzer
https://diskanalyzer.com/
https://www.azofreeware.com/2016/06/wiztree.html
https://www.diskanalyzer.com/eula
WizTree is free for PERSONAL USE ONLY.
Use of WizTree in a commercial environment requires the puchase of a “supporter code” for each business site (physical location).
在商業環境中使用 WizTree 需要為每個商業站點(實體位置)購買「支持者代碼」。

2024年5月23日 星期四

[研究]編譯器錯誤訊息: CS0012: 類型 'System.Object' 是定義在未參考的組件中

[研究]編譯器錯誤訊息: CS0012: 類型 'System.Object' 是定義在未參考的組件中

2024-05-23

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

********************************************************************************

'/' 應用程式中發生伺服器錯誤。

編譯錯誤

描述: 資源編譯無法完成 (錯誤發生於服務要求)。請檢閱下列的特定錯誤詳細資料,並視情況修改您的原始程式碼。

編譯器錯誤訊息: CS0012: 類型 'System.Object' 是定義在未參考的組件中。您必須加入參考至組件 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'。

顯示詳細的編譯器輸出資料:

版本資訊: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.8.4700.0

********************************************************************************

解決:

其實 Visual Studio 2019 編譯時並沒有發生錯誤,是執行時錯誤。

最後檢查發現是 Button 的 OnClick 執行的 Method 剛剛砍掉了,修正後就解決了。

********************************************************************************

ChatGPT

編譯器錯誤訊息 CS0012 提示你在使用的類型 System.Object 是在一個未被引用的組件中定義的。具體來說,它要求你加入 netstandard 庫的引用。這通常發生在你嘗試在專案中使用 .NET Standard 類型或函數,但沒有正確引用相關的 netstandard 組件時。

解決方法

1.檢查專案的目標框架:

確保你的專案目標框架是支援 .NET Standard 的。WebForm 專案通常會目標 .NET Framework。如果你的專案目標是較早版本的 .NET Framework,則可能需要升級目標框架。

2.加入 netstandard 組件的引用:

如果你的專案確實需要引用 netstandard,你可以手動添加它。步驟如下:

右鍵點擊專案,選擇 "Manage NuGet Packages"。

在 "Browse" 標籤下,搜尋 NETStandard.Library。

安裝這個 NuGet 包。

3.檢查組件的相容性:

確保你所引用的其他第三方組件也與你的目標框架相容。有時候,一些第三方庫可能需要 .NET Standard 的支持。


示例步驟

1.升級目標框架(如果需要):

右鍵點擊你的專案,選擇 "Properties"。

在 "Application" 標籤下,查看目標框架。考慮將其升級到 .NET Framework 4.7.2 或更高版本,這些版本更好地支持 .NET Standard。

2.加入 NETStandard.Library:

打開 NuGet 包管理器,點擊 "Manage NuGet Packages"。

在 "Browse" 標籤下,搜尋 NETStandard.Library。

點擊 "Install"。


範例錯誤修正

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net472</TargetFramework> <!-- 目標框架 -->
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="NETStandard.Library" Version="2.0.0" />
  </ItemGroup>
</Project>

這樣可以解決你目前遇到的 CS0012 錯誤。


如果你依然遇到問題,請提供更多上下文訊息,比如你的專案文件(.csproj)的內容或是你正在使用的代碼片段。這樣可以更好地幫助你診斷問題。

********************************************************************************

Copilot

這個錯誤訊息是由於您的專案缺少對 netstandard 組件的參考所導致的。讓我為您解釋一下:

CS0012 錯誤:這是一個編譯時期的錯誤,表示某個類型在未被參考的組件中定義。在您的情況下,這是 System.Object 類型。

解決方法:您需要將 netstandard 組件添加到您的專案中。這個組件通常位於 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Facades 資料夾中。您可以在專案中的參考中新增對 System.Runtime 的參考,版本為 4.0.0.0,文化特性為 中性,PublicKeyToken 為 b03f5f7f11d50a3a12。

https://support.microsoft.com/zh-tw/topic/%E7%95%B6%E6%82%A8%E7%B7%A8%E8%AD%AF%E8%87%B3-net-framework-4-5-2-%E7%82%BA%E7%9B%AE%E6%A8%99%E7%9A%84%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F%E6%99%82-%E5%87%BA%E7%8F%BE%E9%8C%AF%E8%AA%A4%E8%A8%8A%E6%81%AF-534770fe-8640-5a53-897a-e5efb7711a45

https://blog.csdn.net/sinat_40003796/article/details/127734950

(完)

相關

2024年5月21日 星期二

[研究]ASP.NET, 套件 Select2.js 4.0.13 與 selectize 0.12.1 共存測試

[研究]ASP.NET, 套件 Select2.js 4.0.13 與 selectize 0.12.1 共存測試

2024-05-17

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default5.aspx.cs" Inherits="WebApplication1.Default5" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script type="text/javascript" src="Scripts/jquery-3.7.1.min.js"></script>

    <link href="Content/Selectize/css/selectize.css" rel="stylesheet" />
    <script type="text/javascript" src="Content/Selectize/js/standalone/selectize.min.js"></script>

    <link href="Content/css/select2.min.css" rel="stylesheet" />
    <script type="text/javascript" src="Scripts/select2.min.js"></script>

    <script type="text/javascript">
        $(document).ready(function () {
            $('.selectizeCss').selectize();
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:MyDBConnectionString %>"
            SelectCommand="SELECT [Fruit] FROM [MyTable3]"></asp:SqlDataSource>

        <asp:DropDownList ID="DropDownList1" Width="150px" runat="server" AutoPostBack="True" 
            AppendDataBoundItems="True"
            DataSourceID="SqlDataSource1" DataTextField="Fruit" DataValueField="Fruit">
            <asp:ListItem Text="--請選擇--" Value=""></asp:ListItem>
        </asp:DropDownList>
        <br />
        <asp:DropDownList ID="DropDownList2" Width="150px" runat="server" AutoPostBack="True" 
            AppendDataBoundItems="True"
            DataSourceID="SqlDataSource1" DataTextField="Fruit" DataValueField="Fruit">
            <asp:ListItem Text="--請選擇--" Value=""></asp:ListItem>
        </asp:DropDownList>
        <br />
        <asp:DropDownList ID="DropDownList5" Width="150px" runat="server" AutoPostBack="True" 
            DataSourceID="SqlDataSource1" DataTextField="Fruit" DataValueField="Fruit">
        </asp:DropDownList>
        <br />
        <asp:DropDownList ID="DropDownList6" Width="150px" runat="server" AutoPostBack="True" 
            DataSourceID="SqlDataSource1" DataTextField="Fruit" DataValueField="Fruit">
        </asp:DropDownList>
        <br />
        <asp:DropDownList ID="DropDownList3" runat="server" Width="150px">
            <asp:ListItem Text="--請選擇--" Value=""></asp:ListItem>
            <asp:ListItem Text="選項1" Value="1"></asp:ListItem>
            <asp:ListItem Text="選項2" Value="2"></asp:ListItem>
            <asp:ListItem Text="選項3" Value="3"></asp:ListItem>
            <asp:ListItem Text="選項4" Value="4"></asp:ListItem>
        </asp:DropDownList>
        <asp:DropDownList ID="DropDownList4" runat="server" Width="150px">
            <asp:ListItem Text="--請選擇--" Value=""></asp:ListItem>
            <asp:ListItem Text="選項1" Value="1"></asp:ListItem>
            <asp:ListItem Text="選項2" Value="2"></asp:ListItem>
            <asp:ListItem Text="選項3" Value="3"></asp:ListItem>
            <asp:ListItem Text="選項4" Value="4"></asp:ListItem>
        </asp:DropDownList>
    </form>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#<%= DropDownList1.ClientID %>').select2();
            $('#<%= DropDownList2.ClientID %>').selectize();
            $('#<%= DropDownList3.ClientID %>').select2();
            $('#<%= DropDownList4.ClientID %>').selectize();
            $('#<%= DropDownList5.ClientID %>').select2();
            $('#<%= DropDownList6.ClientID %>').selectize();
        });
    </script>
</body>
</html>



(下圖)結果1,乍看OK


(下圖)結果2,select2測試OK

(下圖)結果3,第4個下拉選單,沒有「關鍵字過濾」功能,也就是 selectize 套件至少要有一個選項,不是靠 DataSourceID 選出來的。

結論:看起來可以共存,但也就是 selectize 套件至少要有一個選項,不是靠 DataSourceID 選出來的,否則會沒有「關鍵字過濾」功能。例如下面:
        <asp:DropDownList ID="DropDownList2" Width="150px" runat="server" AutoPostBack="True" 
            AppendDataBoundItems="True"
            DataSourceID="SqlDataSource1" DataTextField="Fruit" DataValueField="Fruit">
            <asp:ListItem Text="--請選擇--" Value=""></asp:ListItem>
        </asp:DropDownList>

********************************************************************************

(完)

相關

[研究]LibreOffice 7.4.6.2 更新 24.2.3

[研究]LibreOffice 7.4.6.2 更新 24.2.3

2024-05-21

LibreOffice 7.4.6.2 更新至 24.2.3 版本,帶來了一些新功能和改進。以下是一些主要變更:

  • 評註樣式:在 LibreOffice 24.2 中,您可以更輕鬆地自訂評註樣式,使其更適合您的需求。
  • Calc 中的欄/列突顯:在 Calc 中,您現在可以突顯特定的欄或列,以更清楚地顯示數據。
  • 選項對話方塊搜尋欄位:在選項對話方塊中,新增了搜尋欄位,讓您更快速地找到所需的設定。
  • 至於 ODF 文件版本,LibreOffice 24.2.3 仍然支援 ODF 1.3 版本,並未有更新。如果您需要使用特定的 ODF 版本,請確認您的文件另存為相應的版本。

**********

今天使用 LibreOffice 時,右上角彈出訊系。


(下圖)選「關於LibreOffice」


(下圖)選「檢查是否有更新」






LibreOffice 7.6.7 和 LibreOffice 24.2.3
https://www.libreoffice.org/download/download-libreoffice/

LibreOffice 7.6.7 是 安定版 (Still)
https://zh-tw.libreoffice.org/download/libreoffice-still/
2024-10-29測試,此網址不再存在,自動導向 https://zh-tw.libreoffice.org/download/download-libreoffice/ 網址,不再提供 7.6.x版,表示 24.x 版是正式版本。

LibreOffice 24.2.3 是 新鮮版 (Fresh)
https://zh-tw.libreoffice.org/download/libreoffice-fresh/
2024-10-29測試,此網址不再存在,自動導向 https://zh-tw.libreoffice.org/download/download-libreoffice/ 網址,不再提供 7.6.x版,表示 24.x 版是正式版本。

LibreOffice Security Advisories
https://www.libreoffice.org/about-us/security/advisories/

Libreoffice : Security Vulnerabilities, CVEs
https://www.cvedetails.com/vulnerability-list/vendor_id-11439/product_id-21008/Libreoffice-Libreoffice.html

(完)

2024年5月16日 星期四

[研究]ASP.NET,Aspose.Cells 24.5.0 授權檔安裝與試用

[研究]ASP.NET,Aspose.Cells 24.5.0 授權檔安裝與試用

2024-05-16

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

如果沒有設定 Aspose License File 授權檔 (商業付費購買),產出的檔案會顯示 "Evaluation Only. Created with Aspose.Cells for .NET.Copyright 2003 - 2024 Aspose Pty Ltd.

********************************************************************************


(下圖) 授權檔案可以看出期限

Default.aspx.cs

using Aspose.Cells;
using System;

namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // 如果沒有設定 Aspose License File,產出的檔案會
            // 顯示 "Evaluation Only. Created with Aspose.Cells for .NET.Copyright 2003 - 2024 Aspose Pty Ltd.

            //Aspose.Cells.License license = new Aspose.Cells.License();
            //string licenseFilePath = Server.MapPath("~/App_Data/") + "Aspose.Total.Product.Family.lic";
            //license.SetLicense(licenseFilePath); // 替換為你的授權檔案路徑

            // 讀取 .ods 檔案
            Workbook workbook = new Workbook(@"C:\temp\input.ods"); // 替換為你的 .ods 檔案路徑

            // 將 .ods 檔案儲存為 .xlsx 檔案
            workbook.Save(@"C:\Temp\output.xlsx", SaveFormat.Xlsx); // 替換為你想要儲存的 .xlsx 檔案路徑
        }
    }
}



(完)

相關

(完)

2024年5月10日 星期五

[研究]ASP.NET, Font.Awesome 5.15.4套件試用、使用確認、非NuGet安裝移除

[研究]ASP.NET, Font.Awesome 5.15.4套件試用、使用確認、非NuGet安裝移除

2024-05-10

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

Mend 是「開源許可合規性」(Open Source License Compliance) 檢查軟體。

敝人某專案 packages.config 中並沒有 Font.Awesome,但 Mend軟體報告有使用,有可能外包商不是用 NuGet 安裝,測試看看到底有那些檔案。


沒有相依套件

檔案列表

  • \packages\Font.Awesome.5.15.4
  • \packages\Font.Awesome.5.15.4\.signature.p7s
  • \packages\Font.Awesome.5.15.4\Content
  • \packages\Font.Awesome.5.15.4\Font.Awesome.5.15.4.nupkg
  • \packages\Font.Awesome.5.15.4\Content\Content
  • \packages\Font.Awesome.5.15.4\Content\Scripts
  • \packages\Font.Awesome.5.15.4\Content\webfonts
  • \packages\Font.Awesome.5.15.4\Content\Content\all.css
  • \packages\Font.Awesome.5.15.4\Content\Content\all.min.css
  • \packages\Font.Awesome.5.15.4\Content\Content\brands.css
  • \packages\Font.Awesome.5.15.4\Content\Content\brands.min.css
  • \packages\Font.Awesome.5.15.4\Content\Content\fontawesome.css
  • \packages\Font.Awesome.5.15.4\Content\Content\fontawesome.min.css
  • \packages\Font.Awesome.5.15.4\Content\Content\regular.css
  • \packages\Font.Awesome.5.15.4\Content\Content\regular.min.css
  • \packages\Font.Awesome.5.15.4\Content\Content\solid.css
  • \packages\Font.Awesome.5.15.4\Content\Content\solid.min.css
  • \packages\Font.Awesome.5.15.4\Content\Content\svg-with-js.css
  • \packages\Font.Awesome.5.15.4\Content\Content\svg-with-js.min.css
  • \packages\Font.Awesome.5.15.4\Content\Content\v4-shims.css
  • \packages\Font.Awesome.5.15.4\Content\Content\v4-shims.min.css
  • \packages\Font.Awesome.5.15.4\Content\Scripts\fontawesome
  • \packages\Font.Awesome.5.15.4\Content\Scripts\fontawesome\all.js
  • \packages\Font.Awesome.5.15.4\Content\Scripts\fontawesome\all.min.js
  • \packages\Font.Awesome.5.15.4\Content\Scripts\fontawesome\brands.js
  • \packages\Font.Awesome.5.15.4\Content\Scripts\fontawesome\brands.min.js
  • \packages\Font.Awesome.5.15.4\Content\Scripts\fontawesome\conflict-detection.js
  • \packages\Font.Awesome.5.15.4\Content\Scripts\fontawesome\conflict-detection.min.js
  • \packages\Font.Awesome.5.15.4\Content\Scripts\fontawesome\fontawesome.js
  • \packages\Font.Awesome.5.15.4\Content\Scripts\fontawesome\fontawesome.min.js
  • \packages\Font.Awesome.5.15.4\Content\Scripts\fontawesome\regular.js
  • \packages\Font.Awesome.5.15.4\Content\Scripts\fontawesome\regular.min.js
  • \packages\Font.Awesome.5.15.4\Content\Scripts\fontawesome\solid.js
  • \packages\Font.Awesome.5.15.4\Content\Scripts\fontawesome\solid.min.js
  • \packages\Font.Awesome.5.15.4\Content\Scripts\fontawesome\v4-shims.js
  • \packages\Font.Awesome.5.15.4\Content\Scripts\fontawesome\v4-shims.min.js
  • \packages\Font.Awesome.5.15.4\Content\webfonts\fa-brands-400.eot
  • \packages\Font.Awesome.5.15.4\Content\webfonts\fa-brands-400.svg
  • \packages\Font.Awesome.5.15.4\Content\webfonts\fa-brands-400.ttf
  • \packages\Font.Awesome.5.15.4\Content\webfonts\fa-brands-400.woff
  • \packages\Font.Awesome.5.15.4\Content\webfonts\fa-brands-400.woff2
  • \packages\Font.Awesome.5.15.4\Content\webfonts\fa-regular-400.eot
  • \packages\Font.Awesome.5.15.4\Content\webfonts\fa-regular-400.svg
  • \packages\Font.Awesome.5.15.4\Content\webfonts\fa-regular-400.ttf
  • \packages\Font.Awesome.5.15.4\Content\webfonts\fa-regular-400.woff
  • \packages\Font.Awesome.5.15.4\Content\webfonts\fa-regular-400.woff2
  • \packages\Font.Awesome.5.15.4\Content\webfonts\fa-solid-900.eot
  • \packages\Font.Awesome.5.15.4\Content\webfonts\fa-solid-900.svg
  • \packages\Font.Awesome.5.15.4\Content\webfonts\fa-solid-900.ttf
  • \packages\Font.Awesome.5.15.4\Content\webfonts\fa-solid-900.woff
  • \packages\Font.Awesome.5.15.4\Content\webfonts\fa-solid-900.woff2


  • \WebApplication1\Content\all.css
  • \WebApplication1\Content\all.min.css
  • \WebApplication1\Content\brands.css
  • \WebApplication1\Content\brands.min.css
  • \WebApplication1\Content\fontawesome.css
  • \WebApplication1\Content\fontawesome.min.css
  • \WebApplication1\Content\regular.css
  • \WebApplication1\Content\regular.min.css
  • \WebApplication1\Content\solid.css
  • \WebApplication1\Content\solid.min.css
  • \WebApplication1\Content\svg-with-js.css
  • \WebApplication1\Content\svg-with-js.min.css
  • \WebApplication1\Content\v4-shims.css
  • \WebApplication1\Content\v4-shims.min.css


  • \WebApplication1\Scripts\fontawesome
  • \WebApplication1\Scripts\fontawesome\all.js
  • \WebApplication1\Scripts\fontawesome\all.min.js
  • \WebApplication1\Scripts\fontawesome\brands.js
  • \WebApplication1\Scripts\fontawesome\brands.min.js
  • \WebApplication1\Scripts\fontawesome\conflict-detection.js
  • \WebApplication1\Scripts\fontawesome\conflict-detection.min.js
  • \WebApplication1\Scripts\fontawesome\fontawesome.js
  • \WebApplication1\Scripts\fontawesome\fontawesome.min.js
  • \WebApplication1\Scripts\fontawesome\regular.js
  • \WebApplication1\Scripts\fontawesome\regular.min.js
  • \WebApplication1\Scripts\fontawesome\solid.js
  • \WebApplication1\Scripts\fontawesome\solid.min.js
  • \WebApplication1\Scripts\fontawesome\v4-shims.js
  • \WebApplication1\Scripts\fontawesome\v4-shims.min.js


  • \WebApplication1\webfonts\fa-brands-400.eot
  • \WebApplication1\webfonts\fa-brands-400.svg
  • \WebApplication1\webfonts\fa-brands-400.ttf
  • \WebApplication1\webfonts\fa-brands-400.woff
  • \WebApplication1\webfonts\fa-brands-400.woff2
  • \WebApplication1\webfonts\fa-regular-400.eot
  • \WebApplication1\webfonts\fa-regular-400.svg
  • \WebApplication1\webfonts\fa-regular-400.ttf
  • \WebApplication1\webfonts\fa-regular-400.woff
  • \WebApplication1\webfonts\fa-regular-400.woff2
  • \WebApplication1\webfonts\fa-solid-900.eot
  • \WebApplication1\webfonts\fa-solid-900.svg
  • \WebApplication1\webfonts\fa-solid-900.ttf
  • \WebApplication1\webfonts\fa-solid-900.woff
  • \WebApplication1\webfonts\fa-solid-900.woff2

********************************************************************************

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" />
</head>
<body>
    <form id="form1" runat="server">
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" CssClass="btn btn-primary">
        </asp:Button>
        <asp:Literal ID="litStarIcon" runat="server" Text='<i class="fas fa-star"></i>'></asp:Literal>
    </form>
</body>
</html>




註解掉 Font.Awesome 引用後,特殊圖案字會不見。

********************************************************************************

要確定 ASP.NET WebForm 專案是否真的使用了 Font Awesome 資源,可考慮:

檢查 ASP.NET WebForm 頁面(.aspx 檔案)或使用者控制項(.ascx 檔案)中的 HTML 和 CSS 程式碼。 尋找是否有引用 Font Awesome 的 CSS 檔案(通常是 font-awesome.css font-awesome.min.css)或字體檔案(通常在 font 資料夾中)。


尋找是否有使用 Font Awesome 的 CSS 類別或圖標,例如 <i class="fas fa-user"></i>。

********************************************************************************

注意,檢查packages.config檔案中套件,是否有任何套件使用(相依) Font.Awesome套件。

********************************************************************************

要移除非NuGet安裝的Font.Awesome,

********************************************************************************

(完)


[研究]Mend, Font.Awesome 5.15.4 與 floating-table-of-contents-1.0.0 授權疑問

[研究]Mend, Font.Awesome 5.15.4 與 floating-table-of-contents-1.0.0 授權研究

2024-05-10

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

參考

[研究]ASP.NET, Font.Awesome 5.15.4安裝套件研究
https://shaurong.blogspot.com/2024/05/aspnet-fontawesome-5154.html

********************************************************************************

Font.Awesome 授權
https://fontawesome.com/license/free

MEND 說使用了 GPL 2.0 的 floating-table-of-contents-1.0.0,但 packages.config 沒看到,看訊息是 Font.Awesome 使用了 floating-table-of-contents-1.0.0

floating-table-of-contents-1.0.0

https://plugins.svn.wordpress.org/floating-table-of-contents
https://plugins.svn.wordpress.org/floating-table-of-contents/tags/1.0.0

其中下面網址說是GPL-2.0授權

https://plugins.svn.wordpress.org/floating-table-of-contents/tags/1.0.0/readme.txt

檢視 floating-table-of-contents-1.0.0 的 Source File List,看不出 Font.Awesome 有使用 floating-table-of-contents-1.0.0 ???
https://plugins.svn.wordpress.org/floating-table-of-contents/tags/1.0.0/src/

檢視Font.Awesome 5.15.4的 conflict-detection.js 內容,並非 GPL-2.0

/*!
 * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
 * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
 */

待研究...

(待續)