- PR -

[ASP.NET]時間により画面遷移の制御を行いたい

1
投稿者投稿内容
ttcoupe
大ベテラン
会議室デビュー日: 2003/01/17
投稿数: 116
お住まい・勤務地: 大阪市
投稿日時: 2003-06-27 10:12
いつも拝見しています。

現在ASP.NETでWebアプリを作成しているのですが、ユーザには夜間の処理を
止めたいと考えています。(夜間バッチが走るため)
時間によりGlobal.asaxやWeb.configを書き換えるのは怖いので、なにかよい
方法がASP.NETの機能としてないのでしょうか。
探してみたのですが・・・でした。

みなさんはどうしているのでしょうか。よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-06-27 10:53
こんにちは。

 World Wide Web Publishing Serviceを止めるというのは?
 コマンドプロンプトで、

net start/stop "World Wide Web Publishing"

を発行し、サービスを起動/停止できるのを確認しました(XP)。これをバッチファイルにし、「タスク」で実行時間を指定すれば、Webに対するアクセスを完全に遮断できるとおもいます。
rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 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
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2003-06-27 11:37
引用:

Jittaさんの書き込み (2003-06-27 10:53) より:

 World Wide Web Publishing Serviceを止めるというのは?


これやると、ユーザがつなごうとしたときに
「指定したページが見つかりません」といったメッセージが
でるようになりますよね。
業務で利用しているような場合にこんなメッセージが
でると、ユーザは不安になると思いますが。。。

global.asaxのなかのSession_OnStart(だっけ?)
あたりで時間を判別して、作業できない時間だったら
そういうメッセージを表示する画面にとばす、とか
しておいたらいいんじゃないでしょうか。
作業の途中でも無理やり終わらせたい場合は
各ページにそういった処理を組み込む必要がでてくる
でしょうけど。
むらさめ
会議室デビュー日: 2003/06/20
投稿数: 8
投稿日時: 2003-06-27 12:55
こんにちは

私が行っている開発でもバッチ処理があり
いろいろ考えましたが結局、以下の対応をしました。

前提条件:IISのサービス停止やサイトの停止などの対応を行うと
     使用しているユーザがアクセスしたときに『ページを表示できません』と
     出てしまうのでだめ!!
 『申し訳ありませんがサービスの時間外です』などのメッセージを出力する。

@データベースにシステムのサービス開始時間と終了時間をもつテーブルを作成
A時間のセットは別途プログラムを作成(サービスが延長になった時のために)
Bログイン画面のPage_Load処理でこのテーブルを参照し、
 時間外の時はログインさせずにメッセージ画面を表示する。

P.S.この対応で時間外にログインしようとしたユーザには対応できますが
    既にログインしているユーザは対応できませんのでこれについては
    以下の対応をしました

    バッチ処理の開始後の一番目の処理でIISのサイトをセッションタイムアウトに
    設定されている時間プラス5分間停止する
    その後サイトを開始するそして実際のバッチ処理を開始する。
(サイトの停止と開始はWMIを使用しました)
(結局サイトを停止しているときは『ページを表示できません』
      が出てしまいますが。。)  

_________________
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-06-27 13:37
引用:

小野@EACさんの書き込み (2003-06-27 11:37) より:
引用:

Jittaさんの書き込み (2003-06-27 10:53) より:

 World Wide Web Publishing Serviceを止めるというのは?


これやると、ユーザがつなごうとしたときに
「指定したページが見つかりません」といったメッセージが
でるようになりますよね。


 エラーまでは確認していませんでした、そういうエラーになりますか。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)

ってやれば、いいのかな???
ttcoupe
大ベテラン
会議室デビュー日: 2003/01/17
投稿数: 116
お住まい・勤務地: 大阪市
投稿日時: 2004-01-13 13:24
みなさん色々とありがとうです。レスが遅れてしまいました(^o^;

夜間処理との兼ね合いでジョブ開始でメンテナンスページへ強制的にジャンプする
DLLに置き換えました。
1

スキルアップ/キャリアアップ(JOB@IT)