基本的には、クライアントに配布するWebアプリで、そのうちの1つが試用するので、ある時点でオフにできるようにする必要があります。終了日を変更できる場合に備えてweb.configに入れたくないので、ハードコードされた日付でglobal.asaxに何かを入れることを考えていましたが、どうすればよいかわかりません。アプリを「オフ」にすることができます。リクエストの認証の部分で日付を確認し、トライアルが終了したことを示すページ(または同様のもの)にリダイレクトすることを考えていましたが、もっと良い方法はありますか?
質問する
1557 次
2 に答える
3
次のように実行できますglobal.asax
。
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if(DateTime.UtcNow > cTheTimeLimitDate)
{
HttpContext.Current.Response.TrySkipIisCustomErrors = true;
HttpContext.Current.Response.Write("...message to show...");
HttpContext.Current.Response.StatusCode = 403;
HttpContext.Current.Response.End();
return ;
}
}
これは web.config に配置するよりも安全ですが、十分に安全なものはありません。それらをページにリダイレクトするか、メッセージを表示しないか、またはあなたが何を考えているかは、さらに良いことです.
ページへのリダイレクトを行うには、呼び出しがページに対するものかどうかも確認する必要があり、コードは次のようになります。
protected void Application_BeginRequest(Object sender, EventArgs e)
{
string cTheFile = HttpContext.Current.Request.Path;
string sExtentionOfThisFile = System.IO.Path.GetExtension(cTheFile);
if (sExtentionOfThisFile.Equals(".aspx", StringComparison.InvariantCultureIgnoreCase))
{
// and here is the time limit.
if(DateTime.UtcNow > cTheTimeLimitDate)
{
// make here the redirect
HttpContext.Current.Response.End();
return ;
}
}
}
さらに難しくするには、すべてのページがそこから来るカスタム BasePage を作成し (からではなくSystem.Web.UI.Page
)、そこにページのレンダリングに制限を設定するか、すべてのページ レンダリングの上にメッセージを表示することができます。終了です。
public abstract class BasePage : System.Web.UI.Page
{
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
if(DateTime.UtcNow > cTheTimeLimitDate)
{
System.IO.StringWriter stringWriter = new System.IO.StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
// render page inside the buffer
base.Render(htmlWriter);
string html = stringWriter.ToString();
writer.Write("<h1>This evaluation is expired</h1><br><br>" + html);
}
else
{
base.Render(writer);
}
}
}
于 2012-10-25T08:29:48.160 に答える
0
app_offline.htm を追加するだけで、ユーザー向けの素敵なメッセージを作成することもできます。また、app_offline.htm を削除するか名前を変更するだけで、サイトをオンラインに戻すのは非常に簡単です。
http://weblogs.asp.net/dotnetstories/archive/2011/09/24/take-an-asp-net-application-offline.aspx
于 2012-10-25T08:33:36.923 に答える