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