确定global.asax中的request.islocal

时间:2013-12-12 14:54:15

标签: c# asp.net global-asax httpcontext

我正在我的global.asax中的Application_Start块中运行一些代码,我正在寻找一种方法来确定应用程序是否在本地运行,这样我就可以有条件地执行代码。 / p>

通常我会使用类似的东西,但global.asax中没有httpcontext

   if (Request.IsLocal == true) {
        //run the code...
   }

还有另一种方法可以确定应用是否在本地运行? Debug总是会在localhost上设置为true,所以也许这会给我一些我可以使用的句柄?

编辑12月13日

我应该澄清BeginRequest这里不适合候选人,因为正在执行的代码是将大量文件写入本地目录,并且不应该在每次请求时重复这些。

4 个答案:

答案 0 :(得分:2)

这个是关于从web.config确定 debug 的问题:

var configSection = ConfigurationManager.GetSection("system.web/compilation");
if (configSection.Debug) {
    // your code
}

我认为你还需要适当地施展。就在手边。

烨。你必须把它投到System.Web.Configuration.CompilationSection

答案 1 :(得分:2)

好的决定顺其自然,@ abhitalks的解决方案也有效!

   if System.Diagnostics.Debugger.IsAttached() {
        //....
   }

答案 2 :(得分:1)

这对我有用。

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

要了解有关如何设置IsDevelopmentEnvironment的更多信息,请查看以下主题。

In ASP.NET, what determines the value of HostingEnvironment.IsDevelopmentEnvironment?

答案 3 :(得分:0)

确定或分类两者的最简单方法是将所需的代码条件放在Application_Start中本地执行,其中就好像它不是在本地执行,然后将它放在Global.asax的BeginRequest中。

我在几天前遇到了issue,可以在线获得即时回复。