3

基本的には、クライアントに配布するWebアプリで、そのうちの1つが試用するので、ある時点でオフにできるようにする必要があります。終了日を変更できる場合に備えてweb.configに入れたくないので、ハードコードされた日付でglobal.asaxに何かを入れることを考えていましたが、どうすればよいかわかりません。アプリを「オフ」にすることができます。リクエストの認証の部分で日付を確認し、トライアルが終了したことを示すページ(または同様のもの)にリダイレクトすることを考えていましたが、もっと良い方法はありますか?

4

2 に答える 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 に答える