2013-11-23 44 views
0

我有一段代码需要在ASP.NET中的global.asax中运行。我希望此代码仅在本地主机上运行,​​并且在EC2实例上的代码时,我希望它运行另一个代码(当我在Amazon Web Service EC2服务器上部署项目时应运行第二个代码),但如何在没有使用DEBUG功能?在Global.asax中检查代码在本地机器上还是在EC2上运行

+0

你usinglocal您的DEV机器上的IIS Express或旧的Visual Studio开发服务器(cassini)? –

回答

1

要检查该请求是否是从本地计算机,这样做:

bool isLocal = HttpContext.Current.Request.IsLocal; 

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

} 

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

+0

谢谢,但我的意思是别的。检查当前站点正在运行的计算机是不是我的笔记本电脑的EC2计算机。也许有一个服务器变量可以访问,告诉我们该计算机是一个EC2实例? –

0

我想uyou可以选择一些环境变量FRM的这些: 环境变量(型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的可用性就足以回答您的问题。

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; 
} 
相关问题