- - PR -
[ASP.NET]時間により画面遷移の制御を行いたい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-06-27 10:12
いつも拝見しています。
現在ASP.NETでWebアプリを作成しているのですが、ユーザには夜間の処理を 止めたいと考えています。(夜間バッチが走るため) 時間によりGlobal.asaxやWeb.configを書き換えるのは怖いので、なにかよい 方法がASP.NETの機能としてないのでしょうか。 探してみたのですが・・・でした。 みなさんはどうしているのでしょうか。よろしくお願いします。 | ||||||||
|
投稿日時: 2003-06-27 10:53
こんにちは。
World Wide Web Publishing Serviceを止めるというのは? コマンドプロンプトで、 net start/stop "World Wide Web Publishing" を発行し、サービスを起動/停止できるのを確認しました(XP)。これをバッチファイルにし、「タスク」で実行時間を指定すれば、Webに対するアクセスを完全に遮断できるとおもいます。 | ||||||||
|
投稿日時: 2003-06-27 11:33
今日は
簡単にするには、下記の方法でも良いのでは(23-5時まで禁止) VB.NETの例ですが。 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If DateTime.Now.Hour > 22 Or DateTime.Now.Hour < 6 Then Response.Write("現在はサービス時間外です") Response.End() End If End Sub | ||||||||
|
投稿日時: 2003-06-27 11:37
これやると、ユーザがつなごうとしたときに 「指定したページが見つかりません」といったメッセージが でるようになりますよね。 業務で利用しているような場合にこんなメッセージが でると、ユーザは不安になると思いますが。。。 global.asaxのなかのSession_OnStart(だっけ?) あたりで時間を判別して、作業できない時間だったら そういうメッセージを表示する画面にとばす、とか しておいたらいいんじゃないでしょうか。 作業の途中でも無理やり終わらせたい場合は 各ページにそういった処理を組み込む必要がでてくる でしょうけど。 | ||||||||
|
投稿日時: 2003-06-27 12:55
こんにちは
私が行っている開発でもバッチ処理があり いろいろ考えましたが結局、以下の対応をしました。 前提条件:IISのサービス停止やサイトの停止などの対応を行うと 使用しているユーザがアクセスしたときに『ページを表示できません』と 出てしまうのでだめ!! 『申し訳ありませんがサービスの時間外です』などのメッセージを出力する。 @データベースにシステムのサービス開始時間と終了時間をもつテーブルを作成 A時間のセットは別途プログラムを作成(サービスが延長になった時のために) Bログイン画面のPage_Load処理でこのテーブルを参照し、 時間外の時はログインさせずにメッセージ画面を表示する。 P.S.この対応で時間外にログインしようとしたユーザには対応できますが 既にログインしているユーザは対応できませんのでこれについては 以下の対応をしました バッチ処理の開始後の一番目の処理でIISのサイトをセッションタイムアウトに 設定されている時間プラス5分間停止する その後サイトを開始するそして実際のバッチ処理を開始する。 (サイトの停止と開始はWMIを使用しました) (結局サイトを停止しているときは『ページを表示できません』 が出てしまいますが。。) _________________ | ||||||||
|
投稿日時: 2003-06-27 13:37
エラーまでは確認していませんでした、そういうエラーになりますか。Page_Loadで時間を確認して・・・とも思ったのですが、「それを全部のページでやる!?」と思い、ttcoupeさんのポストを「Global.asaxで設定できる内容は調べた」と読みとったので、「それじゃ、サービス停止がはやいなぁ」と思ったのです。サービスを止めてしまえば、ログオンしているユーザの処理も、それでストップですし・・・(大問題じゃないか) 今作っているシステムで、Form認証を使っているのですが、その中でセッションの有効期間を設定しています。 Dim ticket As New FormsAuthenticationTicket(1, userName.Value, _ Date.Now, Date.Now.AddHours(サービス停止までの時間), IsPersistent, "", _ FormsAuthentication.FormsCookiePath) Dim encTicket As String = FormsAuthentication.Encrypt(ticket) Response.Cookies.Add(New HttpCookie(FormsAuthentication. _ FormsCookieName, encTicket)) FormsAuthentication.RedirectFromLoginPage(userName.Value, _ IsPersistent) ってやれば、いいのかな??? | ||||||||
|
投稿日時: 2004-01-13 13:24
みなさん色々とありがとうです。レスが遅れてしまいました(^o^;
夜間処理との兼ね合いでジョブ開始でメンテナンスページへ強制的にジャンプする DLLに置き換えました。 |
1