2024年6月13日 星期四

[.NET Core] 解決MVC網頁服務的dll常常被IIS咬住


在開發.Net Core MVC時,因為專案有多個web和api服務依附在iis上做運行,會需要邊跑網頁邊開發,因此常發生project編譯出來的dll被iis咬住,這時候就得手動重啟iis,但等IIS重啟實在太慢了



 以下是更詳細的步驟說明,以便更好地幫助你設置和使用這些批次檔案:

步驟 1:建立iisrestart1.bat批次檔

  1. 打開記事本(Notepad)或任何文字編輯器。
  2. 輸入以下指令:

    C:\Windows\System32\inetsrv\appcmd.exe recycle apppool /apppool.name:"WebAPIPool" C:\Windows\System32\inetsrv\appcmd.exe recycle apppool /apppool.name:"XXXwebPool"
  3. 將檔案另存為iisrestart1.bat,確保副檔名是.bat而不是.txt

步驟 2:建立批次檔的捷徑並設置快捷方式

  1. 右鍵點擊iisrestart1.bat,選擇"建立捷徑"。
  2. 右鍵點擊剛剛建立的捷徑,選擇"內容"。
  3. 在"目標"欄位中輸入以下內容:

    C:\Windows\System32\cmd.exe /C "C:\Users\XXXX\Documents\iisrestart1.bat"
    注意將C:\Users\XXXX\Documents\iisrestart1.bat替換為你實際存放批次檔的位置。

步驟 3:將捷徑釘選到工作列

  1. 右鍵點擊剛才建立的捷徑,選擇"釘選到工作列"。
  2. 現在你可以從工作列直接執行這個批次檔,快速釋放IIS應用程式Pool。

額外指令筆記

  1. 砍掉所有w3wp執行緒


    taskkill /F /IM w3wp.exe /T

    這個指令會強制終止所有的w3wp.exe進程,可以用來在IIS完全無法回應時強制重啟IIS工作進程。

  2. 回收指定的IIS Pool


    C:\Windows\System32\inetsrv\appcmd.exe recycle apppool /apppool.name:"WebAPIPool" C:\Windows\System32\inetsrv\appcmd.exe recycle apppool /apppool.name:"XXXwebPool"

    這些指令用來回收指定的IIS應用程式池,通常用於釋放被鎖定的資源。

注意事項

  1. 權限問題:確保你的使用者帳號有足夠的權限來執行這些IIS相關的指令,否則可能會失敗。
  2. 批次檔路徑:檢查批次檔路徑是否正確,以避免因路徑錯誤而無法執行。
  3. 應用程式池名稱:確保應用程式池名稱正確,否則指令將無法找到並回收相應的應用程式池。

這樣設置後,你應該可以更快捷地管理IIS應用程式池,提升開發過程中的效率。

2023年3月26日 星期日

如何自動賺Rewards點數 - 用firefox套件 Selenium IDE

 用FireFox的Selenium IDE來寫自動測試,可在bing搜尋頁面輸入隨機5碼數字,並按下搜尋,這樣的動作要執行35次


以下是使用 Selenium IDE 寫自動測試的步驟:


打開 Selenium IDE。

在左側的 "Test Suites" 面板中點擊 "+ New Test Suite",並為測試套件命名。

在 "Test Cases" 面板中點擊 "+ New Test Case",並為測試用例命名。

在 "Commands" 面板中點擊 "+ Add Command"。

在彈出的命令列表中,選擇 "open",並在 "Target" 欄位中輸入 "https://www.bing.com/",然後點擊 "Add" 按鈕。

再次點擊 "+ Add Command"。

選擇 "type",並在 "Target" 欄位中輸入 "id=sb_form_q",在 "Value" 欄位中輸入一個隨機的 5 位數字(可以使用 JavaScript 生成),然後點擊 "Add" 按鈕。

再次點擊 "+ Add Command"。

選擇 "click",並在 "Target" 欄位中輸入 "id=sb_form_go",然後點擊 "Add" 按鈕。

複製步驟 7 到步驟 9,並將其插入到測試用例中,以模擬在 Bing 搜尋頁面上輸入另一個隨機 5 位數字的動作。

在 Selenium IDE 工具欄中點擊 "Run" 按鈕,以運行測試。

下面是相應的 Selenium IDE 測試腳本:


{

  "id": "f116f9c6-40b1-413a-ba0f-182bd3501gpt",

  "version": "2.0",

  "name": "Bing Search Test from GPT",

  "url": "https://www.bing.com",

  "tests": [

    {

      "id": "Test Case",

      "name": "Search for Random 5-Digit Number Twice",

      "commands": [

        {

          "command": "open",

          "target": "/search?q=AI",

          "value": ""

        },  

        {

          "command": "execute script",

          "target": "return 1;",

          "value": "index"

        },

        {

          "command": "while",

          "target": "${index} < 35 + 1",

          "value": ""

        },

        {

          "command": "execute script",

          "target": "return Math.floor(Math.random() * 90000) + 10000;",

          "value": "searchTerm"

        },

        {

          "command": "type",

          "target": "id=sb_form_q",

          "value": "${index}${searchTerm}"

        },

        {

          "command": "click",

          "target": "id=sb_form_go",

          "value": ""

        },

{

  "command": "pause",

  "target": "2800",

  "value": ""

},

        {

          "command": "execute script",

          "target": "return ${index} + 1;",

          "value": "index"

        },

        {

          "command": "end",

          "target": "",

          "value": ""

        }

      ]

    }

  ]

}







注意:在這個腳本中,我們使用了 JavaScript 的 Math.random() 函数來生成隨機的5 位數字。這個函數生成一個 0 到 1 之間的隨機小數,然後我們將其乘以 90000,再加上 10000,這樣就能生成一個 10000 到 99999 之間的隨機整數了。


此外,這個腳本中還使用了 Selenium IDE 的基本命令 open、type 和 click,這些命令可以模擬網頁上的基本操作,比如打開頁面、輸入文字和點擊按鈕等。


最後,我們可以運行這個腳本,讓 Selenium IDE 自動打開 Bing 搜尋頁面,輸入隨機的 5 位數字,然後點擊搜尋按鈕,這樣的動作會被執行35次,並且每次都會使用不同的隨機數字進行搜索。




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



您可以使用Firefox的User-Agent Switcher and Manager擴充套件來切換不同的User-Agent。這個擴充套件能夠修改HTTP傳輸協定的請求標頭(request header)字串值(如:瀏覽器排版引擎、作業系統版本),以達到瀏覽網頁時能進行偽裝切換(如只有透過手機瀏覽才能顯示手機專用的網頁版本)。

在Firefox的擴充套件商店中下載安裝User-Agent Switcher and Manager,安裝完成後,在工具列點開圖示,即可任意切換不同系統的瀏覽器,查看網頁在不同平台裝置上所支援的顯示。


使用User-Agent Switcher and Manager的方法很簡單。首先,在瀏覽器右上方點擊「 」圖示即可點開User-Agent Switcher and Manager操作介面。

在介面中,您可以選擇瀏覽器版本和作業系統版本,最後選擇瀏覽器編號版本,點選完畢後可點擊「Apply (Active window)」(只套用當前作用中所開啟的網站分頁)或「Apply (all windows)」(套用所有開啟的網站分頁)按鈕進行設定套用。

2023年2月23日 星期四

[筆記] mio 5051 如何產製KML檔

 


用Google的 my map建置好地圖,接著再匯出成KML

https://www.google.com/maps/d/?hl=zh-TW






打開KML檔,把 <Document> 這層節點拿掉







2022年3月15日 星期二

[SQL] 找出執行時間最長的10條SQL

 

如果想對SQL作篩選,可將

not like '%fetch%'  換成  like '%user%'就可以找出SQL語句中含有user關鍵字的SQL

原文:

http://blog.csdn.net/silvanus/article/details/8424227


SELECT top 10
	(total_elapsed_time / execution_count)/1000 N'平均時間ms'
	,total_elapsed_time/1000 N'總花費時間ms'
	,total_worker_time/1000 N'所用的CPU總時間ms'
	,total_physical_reads N'物理讀取總次數'
	,total_logical_reads/execution_count N'每次邏輯讀次數'
	,total_logical_reads N'邏輯讀取總次數'
	,total_logical_writes N'邏輯寫入總次數'
	,execution_count N'執行次數'
	,creation_time N'語句編譯時間'
	,last_execution_time N'上次執行時間'
	,SUBSTRING(
		st.text, 
		(qs.statement_start_offset/2) + 1, 
		(
			(CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2
		) + 1
	) N'執行語句'
	,qp.query_plan
FROM
sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
WHERE
	SUBSTRING(
		st.text, 
		(qs.statement_start_offset/2) + 1,
		(
			(CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2
		) + 1
	) not like '%fetch%'
ORDER BY
	total_elapsed_time / execution_count DESC;










2022年3月14日 星期一

[.NET Core] 解決MVC網頁服務的dll常常被IIS咬住

 

在開發.Net Core MVC時,因為專案有多個web和api服務依附在iis上做運行,會需要邊跑網頁邊開發,因此常發生project編譯出來的dll被iis咬住,這時候就得手動重啟iis,但等IIS重啟實在太慢了


Severity Code Description Project File Line Suppression State

Error MSB3027 Could not copy "******\bin\Debug\net6.0\******.dll" to "bin\Debug\net6.0\*****.dll". Exceeded retry count of 10. Failed. The file is locked by: "IIS Worker Process (6404)" Company C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets\


無法將 "****\bin\Debug\net6.0\****.dll" 複製到 "bin\Debug\net6.0\****.dll"。已超過重試次數 10。失敗。檔案鎖定者: "w3wp.exe (6404)" Company C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets 4967


C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(4967,5): error MSB3021: 無法將檔案 "****\bin\Debug\net6.0\****.dll" 複製到 "bin\Debug\net6.0\****.dll"。由於另一個處理序正在使用檔案 'bin\Debug\net6.0\****.dll',所以無法存取該檔案。





這邊提供比較快速的方法


1. 建立一個iisrestart1.bat批次執行檔

指令內容如下

C:\Windows\System32\inetsrv\appcmd.exe recycle apppool /apppool.name:"WebAPIPool"

C:\Windows\System32\inetsrv\appcmd.exe recycle apppool /apppool.name:"XXXwebPool"


2. 針對bat 批次檔建立捷徑,接著在捷徑的"內容"中調整"目標"值

C:\Windows\System32\cmd.exe /C "C:\Users\XXXX\Documents\iisrestart1.bat"




3. 釘選到工作列,即可完成



之後只要執行批次檔就可以快速釋放IIS  POOL,進而能順利做編譯,若在DEBUG模式下沒有反應時,則需整個重啟IIS或是砍掉w3wp執行緒



* 指令筆記:


//砍掉所有w3wp執行緒

taskkill /F /IM w3wp.exe /T


//回收指定的IIS Pool

C:\Windows\System32\inetsrv\appcmd.exe recycle apppool /apppool.name:"WebAPIPool"

C:\Windows\System32\inetsrv\appcmd.exe recycle apppool /apppool.name:"XXXwebPool"

2022年1月13日 星期四

[工具] WebService測試工具SoapUI

 

 關於使用SoapUI來測試WebService的筆記





貼上網址,後一定要加上 ?WSDL







 

<![CDATA[   ]]>包覆電文內容,但頭尾都不能換行哦


 






2021年12月21日 星期二

[.net] 檢查Server安裝.net 版本

 


檢查server上安裝的.net framework版本



cd C:\Windows\System32

dir %WINDIR%\Microsoft.Net\Framework\v* O-N /B




檢查server上安裝的.net core版本

dotnet --list-sdks




參考 https://docs.microsoft.com/zh-tw/dotnet/core/install/how-to-detect-installed-versions?pivots=os-windows



2021年9月1日 星期三

[MSSQL] 預存程序引用DLL參考



*在組件中加入DLL參考



*可將DLL檔案轉成bytes 直接加入參考



CREATE ASSEMBLY SQLCom

FROM 0x4D5A900003.................

WITH PERMISSION_SET = SAFE;



DLL to bytes string 參考

https://stackoverflow.com/questions/2885335/clr-sql-assembly-get-the-bytestream





 *DLL程式碼


    [Microsoft.SqlServer.Server.SqlFunction]

    public static string GZip(string rawString)

    {

       ..................

            return (string)(Convert.ToBase64String(zippedData));

    }








    * 於資料新增 擴充的 預存程序

    CREATE FUNCTION dbo.GZip(@src nvarchar(MAX))

    RETURNS nvarchar(MAX)

    EXTERNAL NAME SQLCom.UserDefinedFunctions.GZip





*SQL指令
    SELECT dbo.GZip(S_String)




2021年1月25日 星期一

[C#] 利用svcutil.exe下指令產生WCF client端的程式碼

 


在做異質系統間接時,若是透過WCF連線,此時專案就必須加入服務參考,但開發本機端若因為防火牆因素無法直接連到對方的WCF服務來取的服務參考,但目標機器又無法安裝VS2019開發工具,這時可在目標機器上安裝SDK,並利用svcutil.exe來下指令產生clinet端程式碼


以下兩道指令

svcutil.exe /t:metadata http://******/******/MsgService.svc

svcutil *.wsdl *.xsd /language:cs /out:MsgService.cs /config:app.config




2020年6月2日 星期二

[win10] 在Windows 10中以 系統管理員身分

擷取自:https://walker-a.com/archives/5966

參考:https://marcus116.blogspot.com/2018/12/how-to-run-visual-studio-as-administrator-by-default.html




方法:捷徑上指定系統管理員身分為預設的執行權限
在捷徑上按下滑鼠右鍵並選擇「內容」。

【捷徑】分頁畫面上按下〔進階〕。
在〔進階〕內容的畫面上勾選「以系統管理員身分執行」,並按下〔確定〕來離開。


如果出現以下拒絕存取的對話框,請點選〔繼續〕按鈕來完成。


你也可以使用【相容性】分頁上的「以系統管理員身分執行此程式」。
 

MangoHost Copyright © 2009 Cookiez is Designed by Ipietoon for Free Blogger Template