我正在将MVC5用于Web应用程序。 Web应用程序在IIS7或更高版本中运行。
在application_start
上的Global.asax中,将设置许可证数量:
protected void Application_Start()
{
try
{
MyApp.cNumberOfLicenses = COM.GetNumberOfLicenses();
}
catch(Exception e)
{
// log exception
// stop web site.
}
}
如果在此上下文中引发任何预期,则应该在IIS管理器中关闭该网站:
如何在我的Application_Start
停止当前网站?
答案 0 :(得分:1)
您可以在" Microsoft.Web.Administration.dll"
的帮助下完成此操作using Microsoft.Web.Administration;
添加" Microsoft.Web.Administration.dll"的引用后在Global.asax中写下以下代码
protected void Application_Start(object sender, EventArgs e)
{
try
{
MyApp.cNumberOfLicenses = COM.GetNumberOfLicenses();
}
catch (Exception e)
{
// get the web site name
var lWebSiteName = System.Web.Hosting.HostingEnvironment.ApplicationHost.GetSiteName();
// log exception
// stop web site.
using (ServerManager smg = new ServerManager())
{
var site = smg.Sites.FirstOrDefault(s => s.Name == lWebSiteName);
if (site != null)
{
//stop the site...
site.Stop();
}
}
}
}
答案 1 :(得分:1)
我不会停止它,但如果您没有许可证,则显示一些信息。
这是一个例子和想法。
您可以在global.asax
上使用此代码,如果您在开始时没有许可证,则打开一个标记,之后您不允许显示任何页面,并且您发送的页面是可以保留一个html文件。
private static bool fGotLicense = true;
protected void Application_Start()
{
try
{
MyApp.cNumberOfLicenses = COM.GetNumberOfLicenses();
}
catch(Exception e)
{
// log exception
// stop web site.
fGotLicense = false;
}
}
protected void Application_BeginRequest(Object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
// if not have license - let show some infos
if (!fGotLicens)
{
// the file we look now is the app_offline_alt.htm
string cOffLineFile = HttpRuntime.AppDomainAppPath + "app_offline_alt.htm";
// if exist on root
if (System.IO.File.Exists(cOffLineFile))
{
using (var fp = System.IO.File.OpenText(cOffLineFile))
{
// read it and send it to the browser
app.Response.Write(fp.ReadToEnd());
fp.Close();
}
}
// and stop the rest of processing
app.Response.End();
return;
}
}
答案 2 :(得分:0)
您可以在网络服务器中找到一个名为app_offline.htm
且内容为This website is offline now
的文件,并将其复制到您想要参加任何活动的网站的根目录。
它将直接显示该消息,但是,应用程序池仍将打开,当您需要启动时,您只需要将其重命名为其他内容。