將本地 COM 組件(如 Matlab、Office、專業計算庫)透過 ASP.NET 發布為 Web API,讓無安裝環境的用戶也能調用強大功能。
方案總管 → 參考 → 加入參考 → COM 標籤 → 選擇 Matlab Application (Version X.X) Type Library。
<asp:TextBox ID="txtExpr" runat="server" TextMode="MultiLine" Rows="5" Cols="60" />
<asp:Button ID="btnExec" Text="執行" OnClick="btnExec_Click" runat="server" />
<asp:Literal ID="litResult" runat="server" />
protected void btnExec_Click(object sender, EventArgs e)
{
var matlab = new MLApp.MLAppClass(); // COM 介面
try
{
string result = matlab.Execute(txtExpr.Text);
// 格式化換行與空白供 HTML 顯示
result = result.Replace("\n", "<br/>").Replace(" ", " ");
litResult.Text = result;
}
catch (Exception ex)
{
litResult.Text = "錯誤: " + ex.Message;
}
finally
{
matlab.Quit(); // 釋放 COM 物件
System.Runtime.InteropServices.Marshal.ReleaseComObject(matlab);
}
}
預設 ASP.NET 身分無權建立 COM 物件,需在 web.config 設定模擬具權限帳號:
<identity impersonate="true" userName="Domain\User" password="Pwd" />
| 維度 | 說明 |
|---|---|
| 適用場景 | 無狀態、計算密集型、資料處理函數(如數學、統計、報表) |
| 不適用 | 即時控制、長連線、需保持狀態、GUI 互動的組件 |
| 安全風險 | COM 組件可能存取檔案系統、註冊表、啟動進程 |
| 緩解措施 | 二次封裝:輸入驗證、權限降級、沙箱隔離、審計日誌、速率限制 |