检查代码在本地计算机上运行或在Global.asax中的EC2上运行

时间:2013-11-23 14:34:03

标签: c# asp.net global-asax

我有一个代码,我想在ASP.NET中的global.asax中运行。我希望此代码仅在localhost上运行,当EC2实例上的代码运行时,我希望它运行另一个代码(第二个代码应该在我在Amazon Web Service EC2服务器上部署项目时运行),我怎么能这样做使用DEBUG功能?

3 个答案:

答案 0 :(得分:1)

要检查请求是否来自本地计算机,请执行以下操作:

bool isLocal = HttpContext.Current.Request.IsLocal;

if(isLocal)
{
    // Do things that should only be done when request is local here

}
  

注意:请阅读HttpRequest.IsLocal documentation以获取更多信息。

答案 1 :(得分:0)

我想你可以选择以下几个环境变量: 环境变量(类型ENV) EC2_AMI_ID EC2_AKI_ID EC2_ARI_ID EC2_AMI_MANIFEST_PATH EC2_PLACEMENT_AVAILABILITY_ZONE EC2_HOSTNAME EC2_INSTANCE_ID EC2_INSTANCE_TYPE EC2_LOCAL_HOSTNAME EC2_PUBLIC_HOSTNAME EC2_PUBLIC_IPV4 EC2_RESERVATION_ID EC2_SECURITY_GROUPS RS_EIP RS_SERVER RS_SKETCHY RS_SYSLOG RS_TOKEN RS_SERVER_NAME 列表取自此处:https://support.rightscale.com/09-Clouds/AWS/FAQs/FAQ_0013_-_What_EC2_environment_variables_are_available_in_RightScripts%3F

我认为,检查EC2_AMI_ID和EC2_INSTANCE_ID的可用性就足以回答您的问题了。

答案 2 :(得分:0)

如果您使用的是ASP.NET开发服务器(VS 2012及更早版本),请使用以下方法:

public static bool IsDebugWebServer()
{
  if (HttpContext.Current != null && HttpContext.Current.Request != null)
  {
    return HttpContext.Current.Request.ServerVariables["SERVER_SOFTWARE"] == null || HttpContext.Current.Request.ServerVariables["SERVER_SOFTWARE"] == string.Empty;
  }
else
  {
    return false;
  }
}

如果您使用的是本地IIS Express,请使用:

public static bool IsDebugWebServer()
{
  return String.Compare(Process.GetCurrentProcess().ProcessName, "iisexpress") == 0;
}