c# - 以编程方式确定代码是否在 IIS Express 下运行

标签 c# iis iis-express

我不确定这是否可行,但我希望能找到一条线索来确定当前正在执行的代码是否在 IIS Express 下运行。到目前为止我最好的近似值,这是令人难以置信的 hackish,并且肯定会在某个时候失败/中断:

bool IsExpress = 
  Request.ServerVariables["SERVER_SOFTWARE"] == "Microsoft-IIS/7.5"
  && Int32.Parse(Request.ServerVariables["INSTANCE_ID"]) > 1000000000;

肯定有更好的方法。我对 Application、Server 和 Request 对象的检查似乎没有揭示任何可能提供更好洞察力的东西。也许我只需要看一些其他物体?

更新:

我真的很好奇是否有一种方法可以检测到这一点 - 在这一点上它真的很学术,我没有迫切需要使用它。原来的问题成立。但本着回应评论的精神,我特别有兴趣回答来自本网站另一个问题/答案的批评:How to search the server's MIME map .批评是发布的答案不适用于 IIS Express,仅适用于传统的 IIS 实例。 IIS Express 将 MIME 配置存储在 applicationhost.config XML 文件中,我想更新该答案以提供一种方法来为 IIS Express 返回该信息。我当然可以只添加一些从 XML 中获取适当值的代码(LINQ to XML Yay!),但我真的想让它更智能。明确地说,我不需要解析该文件的帮助 - 只是尝试检测代码当前是否正在 IIS Express 引擎中执行的更优雅的东西。

更新 2:

IIS 8.0 Express Beta 是 released this week ,它进一步表明我的问题中的方法很脆弱并且会破裂。虽然以特定版本为目标并不会破坏交易,但最好考虑到这一点并尝试确保代码至少适用于当今已知的版本。

最佳答案

检查当前进程名称是否有效?

bool isExpress = 
  String.Compare(Process.GetCurrentProcess().ProcessName,"iisexpress") == 0;

正常的 IIS 在内存中的 w3wp.exe 下运行。

关于c# - 以编程方式确定代码是否在 IIS Express 下运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9540437/

相关文章:

iis-express - 如何将 IIS Express 作为通过 Windows 服务启动的进程运行

c# - BookSleeve如何查询redis中的内容值

c# - 从任务计划程序运行时程序在错误的目录中搜索配置文件

c# - 隐藏页面 url asp.net

Docker for windows - 无法连接到默认 iis 站点

c# - 重新启动调试 session 后出现 FatalExecutionEngineError

c# - HTTP 错误 500.30 - ANCM 进程内启动失败

c# - 对运行时实例化的类使用依赖注入(inject)

iis - appcmd.exe 覆盖单个站点的整个 xml 配置(将设置应用于已存在的站点)

asp.net-mvc - 尝试在 ASP.NET MVC 中使用 Automapper 时,如何消除 SecurityException 错误?