1

私はこの問題を 2 日間解決しようとしてきましたが、まだネット上で役立つものを見つけることができませんでした。奇妙なことに、これは以前は機能していました..! Webサーバーの設定をいくつか変更した後(残念ながら正確な変更を思い出せません)、動作しなくなりました:(

これが何が起こるかです。

page_load (aspx.cs、codebehind) で現在の日時文字列 (長い日時文字列、秒を含む) に値が設定される aspx ページに隠しフィールドがあります。同時に、このランダムな値は、同じメソッドの次の行の右のセッション変数に記録されます。

(簡単に説明すると)この値をWebサービスに送信し、そこでこの値をセッション変数に保存されている値と照合します。何を推測します..同じものはありません! これは以前は機能していましたが、機能しなくなりました。何が変わったのか、何が間違っていたのかわかりません。この文字列の値はdatetime値(秒付き)なので、この値が「Most of The Time」で2秒ずつ変化していることが分かります。IIS で (ワーカー プロセスをアタッチして) コードをデバッグすると、セッションから回復された値が非表示フィールドから回復された値から 2 秒遅れていることがわかります。

これは私の開発マシンで動作していますが、問題は、Web サーバー (Windows サーバー 2008 r2) で動作していないことです。

あなたが提案できる代替案があることは知っています。私自身もこのアプローチの代替案を考えることができますが、ここでパズルを解くことに非常に興味があります...

どんな助けでも大歓迎です。

ありがとう。

編集:簡単なアプローチ

page_load でのメソッド呼び出し

addSecureString(System.DateTime.Now.Second.ToString());

変数を記録するメソッド

protected void addSecureString(string s) {

        string secureS = "111" + s;
        Session.Add("securestring", secureS);
        hdnss.Value = Session["securestring"].ToString();

}

ウェブサービスで

string tocheck = Session["securestring"];

hdnss -> ページの非表示フィールドの ID 注: 重要な部分であり、変更されているため、datetime の Seconds 値を使用しています。

4

1 に答える 1

0

Web サービスがセッションと対話する場合、特別な考慮事項があります: http://msdn.microsoft.com/en-us/library/aa480509.aspx

于 2012-09-18T16:34:27.463 に答える