我不确定这是否可能,但我希望可以得到一些线索,以确定当前正在运行的代码是否在IIS Express下运行。迄今为止,我的最佳近似值非常破解,肯定会在某个时刻失败/中断:
bool IsExpress =
Request.ServerVariables["SERVER_SOFTWARE"] == "Microsoft-IIS/7.5"
&& Int32.Parse(Request.ServerVariables["INSTANCE_ID"]) > 1000000000;
肯定有更好的方法。我仔细查看了Application、Server和Request对象,并没有发现任何能提供更好洞见的东西。也许我需要看看其他对象?更新: 我真的很想知道是否有一种方法来检测这个 - 现在它确实是学术性的,我没有强烈的需要使用它。原始问题依然存在。但是出于回应评论的精神,特别是回答该网站上另一个问题/答案中的批评:如何搜索服务器的MIME映射。 批评是发布的答案对IIS Express不起作用,只适用于传统的IIS实例。IIS Express将MIME配置存储在applicationhost.config XML文件中,我想更新该答案,以提供一种返回IIS Express的信息的方法。 我肯定可以添加一些代码,从XML中获取适当的值(感谢LINQ to XML!),但我真的想让它更智能化。 明确一下,我不需要帮助解析该文件 - 只需要在尝试检测代码当前是否在IIS Express引擎中执行时提供一些更优雅的方法。
更新2: IIS 8.0 Express Beta 在本周发布,这进一步表明我问题中的方法脆弱且会破裂。虽然针对特定版本不是致命问题,但考虑到至少要确保代码能够与已知的版本一起使用还是很好的。