确定ASP.NET应用程序是否在本地运行

我想知道是否有推荐的方式来确定一个asp应用程序是否在本地运行。 目前,我使用Request对象,并在服务器variables上执行localhost或127.0.0.1的stringsearch,但是这有几个限制。 最大的问题是,当我需要的时候,Request对象并不总是可用的。

请参阅HttpRequest.IsLocal

bool isLocal = HttpContext.Current.Request.IsLocal; 

您可以检查Request.IsLocal属性

Request.IsLocal与检查127.0.0.1或:: 1是一样的。 看到这个职位: http : //forums.asp.net/p/1065813/4081335.aspx 。

这对Application_Start有效

 if (!HostingEnvironment.IsDevelopmentEnvironment) { GlobalFilters.Filters.Add(new RequireHttpsAttribute()); } 

要了解更多关于如何设置IsDevelopmentEnvironment,请看下面的线程。

在ASP.NET中,什么决定了HostingEnvironment.IsDevelopmentEnvironment的价值?

请求并不总是在ASP.NET环境中可用?

HttpContext及其属性Request / Response在服务器开始处理页面时立即初始化。 所以在任何地方你可以在你的页面生命周期中执行c#代码,你应该能够检查请求的URL。

如果HttpContext.Current不为null使用

 HttpContext.Current.Request.IsLocal 

否则,例如在App_Start或HttpContext.Current可用之前,您可以testing

 HostingEnvironment.ApplicationPhysicalPath.StartsWith(@"C:\") 

或PC上的专用磁盘。

另一种方法是使用生产中设置的常量编译variables,例如,如果使用Azure和visualstudio.com。

这是肮脏的,但它的作品。