如何动态确定.NET Core Web应用的入口DLL?
确定IIS部署的.NET Core Web应用入口DLL的方法
方法1:查看web.config配置
.NET Core部署到IIS时,应用根目录的web.config会明确指定启动参数。找到文件里的<aspNetCore>节点,其中arguments字段后的DLL即为入口程序集:
<aspNetCore processPath="dotnet" arguments=".\My.Service.dll" />
无论入口DLL命名如何,该配置项指定的就是启动时加载的核心程序集。
方法2:通过进程命令行参数定位
找到应用对应的w3wp.exe进程,查看其命令行参数即可获取入口DLL:
- 用PowerShell筛选目标进程:
Get-WmiObject Win32_Process | Where-Object { $_.CommandLine -like "*dotnet*Service.API*" } | Select-Object CommandLine
- 输出结果里会包含类似
dotnet .\xxx.dll的内容,末尾的DLL就是入口。
方法3:扫描DLL的元数据标记
入口DLL必然包含.entrypoint标记(对应Main方法),可以用ildasm工具批量验证:
- 遍历bin目录下的DLL,执行命令:
ildasm /text <目标DLL路径> | findstr ".entrypoint"
- 能返回结果的DLL就是入口程序集。
方法4:分析进程模块加载顺序
入口DLL是进程启动时最早加载的程序集之一,用PowerShell查看模块加载时间:
Get-Process w3wp | Where-Object { $_.MainWindowTitle -like "*Service.API*" } | Select-Object -ExpandProperty Modules | Where-Object { $_.FileName -like "*bin\*.dll" } | Sort-Object LoadedTime
排序后最靠前的DLL即为入口。
内容的提问来源于stack exchange,提问作者reynoldsbj
相关产品推荐
相关产品推荐

