2013-11-23 64 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; 
} 
相關問題