在IIS中托管Web API时如何获取进程真实名称而非w3wp?
解决IIS托管Web API获取真实名称的问题
因为IIS上的Web API是运行在应用池进程w3wp.exe里的,所有同池的应用都会共享这个进程,所以直接拿进程名只能得到w3wp。要获取你的API项目名称或DLL名称,可以用以下几种方法:
获取Web API的DLL名称(无后缀)
直接读取当前执行程序集的名称,这就是项目编译后生成的DLL文件名(不带.dll后缀):using System.Reflection; var dllName = Assembly.GetExecutingAssembly().GetName().Name;获取ASP.NET Core Web API的项目名称
如果是ASP.NET Core版本的API,可以通过依赖注入的IWebHostEnvironment对象获取项目名称(默认和你的项目名称一致):- 在控制器或服务的构造函数中注入
IWebHostEnvironment:private readonly IWebHostEnvironment _env; public YourController(IWebHostEnvironment env) { _env = env; } - 读取项目名称:
var projectName = _env.ApplicationName;
- 在控制器或服务的构造函数中注入
获取传统ASP.NET Framework Web API的项目名称
对于Framework版本的API,除了用上面的程序集名称方法,还可以通过网站物理路径解析项目名称:using System.IO; // 获取网站根目录路径 var rootPath = HttpContext.Current.Server.MapPath("~/"); // 从路径中提取最后一个文件夹名(通常就是项目名称) var projectName = Path.GetFileName(Path.GetDirectoryName(rootPath));
内容的提问来源于stack exchange,提问作者kosnkov
相关产品推荐
相关产品推荐

