今日は社内で講師がメッセージを投稿する機能を作っていますが、端的に言うと、初めて講師が入ったときはメッセージが無く、その後メッセージが追加・修正されます。 CSとフロントデスク間のやり取りをハンドラーを通じて実装します。
ユーザーのメッセージを変更したいので、ユーザーの ID に基づいて変更する必要があります。ただし、通常、会社のプロジェクトではセッションにログインした後にユーザーの情報が保存されるため、ID に基づいて ID を取得する必要があります。私はいつも最初は
ID を取得できません。つまり、cs ファイルで必要な ID を取得できません。取得方法は次のとおりです。
この「UserSessionPolicy.SESSION_USERID」について説明します。「UserSessionPolicy」は、ユーザー情報を保存するために特別に使用されるクラスです。もちろん、コード内の「SESSION_USERID」であるユーザー ID も保存します。送信ボタンをクリックすると、「オブジェクトはインスタンスを参照していません」のようなエラーが報告されました。インスタンス化されていないと誰もが思いますよね。そうです、インスタンス化されていないだけですが、Handler でインスタンス化するにはどうすればよいでしょうか?
セッションに関しては、セッションが状態を保存するために使用されるスコープであることは誰もが知っているため、ハンドラーで名前空間を参照する必要があります。私は以前にこの問題に遭遇しました。
とても頭が痛かったのですが、今日解決しました。今日、私はここに私の道徳を書き留めて、皆さんと共有します。将来、ネットユーザーが同じような問題に遭遇したときに少しでも役立つことを願っています。
私の例では、講師はメッセージで ID を使用する必要がありますが、これは ID を使用する必要がある他のユーザーに対しても行うことができますか?一般に、Handler を通じてデータを処理するクラスは、「using System.Web.SessionState;」という名前を参照する必要があります。
スペースがある場合、そのクラスは「IReadOnlySessionState」を継承します。例えば:
コード
<%@ WebHandler Language="C#" Class="TeacherInfoHandler" %>System の使用;System.Web の使用;com.rrs.baby.business.Information の使用;com.rrs.core の使用;System.Web.Script.Serialization の使用;using System.Web.SessionState;//セッションに保存する ID を使用しますusing System.Collections;public class TeacherInfoHandler: IHttpHandler, IReadOnlySessionState{ //メソッド本体}
この TeacherInfoHandler クラスでは、セッションによって保存された値を使用できます。