能否在浏览器开发者工具中列出Blazor Server的JSInvokable方法及程序集名?
Blazor Server无源码下查看JSInvokable方法及程序集名称的可行性
可以通过浏览器开发者工具获取部分相关信息,但无法直接完整列出所有可用的[JSInvokable]方法,具体情况如下:
获取程序集名称
- 在浏览器开发者工具的Console面板中,执行
DotNet.assemblyNames(部分Blazor版本可能为DotNet._assemblyNames),即可查看客户端已注册的程序集名称列表。 - 也可查看网络请求中的应用打包资源或框架脚本,从中找到以文本形式存在的程序集名称。
查看JSInvokable方法的限制
- Blazor Server不会将
[JSInvokable]方法的完整元数据发送到客户端,方法的映射关系仅在服务端维护,因此无法直接通过开发者工具枚举所有可用方法。 - 若应用中存在已有的JavaScript调用代码(比如页面内的
<script>、打包后的JS文件),可以从中提取出已被调用的DotNet.invokeMethodAsync/DotNet.invokeMethod调用,从而获取部分已知的方法名和对应程序集。 - 尝试调用不存在的方法时,服务端返回的错误信息可能会泄露少量程序集或方法相关信息,但这属于被动且不完整的获取方式。
总的来说,这种方式只能拿到有限的信息,无法实现像源码层面那样的完整枚举,这是Blazor Server出于安全考量的设计,避免客户端直接获取所有可远程调用的方法清单。
内容的提问来源于stack exchange,提问作者Cyber Soldier
相关产品推荐
相关产品推荐

