として働いていました。これに対する解決策はここで十分に文書化されており、私はコードを見てすぐにセッション変数をstring
にキャストすることが修正されていることをすでに知っていました。可能な意図しない参照比較では、私は次のようなコードを持っていることを意図し
しかし、コードは元々書かれて以来、何年も経っていません。今週までのテスト環境では、if
ステートメントはtrueと評価され、//do stuff
セクションが実行されました。この誤ったコードは、本番環境で意図したとおりに動作しています。
これはどのようにすることができますか?書かれているように、このコードが意図したとおりに機能するはずの理由はありません。まだ生産しています。そして、このコードを作ってはいけないはずだったのですが、突然その作業を止めました(あるいは、いつものように振る舞います)。
は、テスト環境のprocからのセッションですか? –
この質問では2つのことが混乱しています。まず、質問には論理的な誤りが含まれています。コードの動作は常に同じです。 2つの参照が等しいかどうか比較します。それが真実ならば、それは参照が等しいからです。それが一貫して真実を生むならば、参照は一貫して等しい。私はあなたがここで混乱していることを理解していません。第二に、私は私の人生のために、ここでヌル合体オペレータが意味するものを理解することはできません。コードは「値がnullの場合は空とNULLを比較します」という意味ですが、なぜですか? nullの場合、値はすでに "foo"ではありません! –
'Session [key]'はどのくらい正確に設定されていますか?それは何と比較されますか?テスト環境と本番環境ではどの.NET Frameworkのバージョンを使用しますか? 2つの環境の間には、文字列インターンシングが異なるように動作する原因となったいくつかの違いがなければなりません。あなたが投稿したコードは2文字列のリテラルを使用します - アフリカンこれらは、インターンシップがアセンブリレベルでオフにされない限り、常にインターンンされます。 –