4

元従業員は、DictionaryBaseを継承し、ILogicalThreadAffinitiveを実装するカスタムVB.NetContextクラスを実装しました。クラスオブジェクトは、.NET 4Frameworkを使用するASP.NETWebアプリケーションでのユーザーのセッション全体を通じて、ユーザーID、言語、場所などの値を維持します。

<Serializable()> _
Public NotInheritable Class Context
    Inherits DictionaryBase
    Implements ILogicalThreadAffinative

    ... Class Methods ...

End Class

オブジェクトクラスは正常に機能しているようで、ポップアップページを読み込んでも、ページ間を移動するときに期待どおりの値を保持します。私の問題は、PostBackアクションがあるときはいつでも発生します。これが発生すると、オブジェクトはnullになり、null参照エラーが発生します。

奇妙な部分は、それが私以外のすべての人に役立つということです。クライアントのシステムにインストールされ、テスト環境で実行され、プロジェクトの他の開発者のために機能しますが、ローカルIIS7.0Webサーバーでアプリケーションをホストする開発環境で機能するのを妨げる何かがあります。他の開発者と私は、変更したはずのすべてのローカルIIS設定、VS2010設定、およびインターネットオプションをクロスチェックしましたが、2台のマシン間ですべてが同一であるように見えます(Win7 x64、x86モードでアプリケーションを構築) 。言うまでもなく、この問題は開発とトラブルシューティングの問題にとって非常に法外なものになっています。

そのような振る舞いを引き起こす可能性のある他に何をチェックできるかについての提案はありますか?

編集:さらに高度な掘り下げを行った後、PostBackが2番目のスレッドでリクエストを発生させているようです。この2番目のスレッドは、ドキュメントに記載されているように見えますが、CallContextの値を引き継いでいません。同僚の作業環境では、このリクエストは同じスレッドで処理されます。これが問題の主な症状のようですが、それでも原因を特定することはできません。また、おそらく注意してください。私のマシンにはSSDがあり、他の開発者にはありません。それが糸脱毛に影響を与えるかどうかはわかりませんが、これらの結果が得られるとは思いません。

4

1 に答える 1

0

このソリューションには特に満足していませんが、ASP.NET v4クラシックアプリケーションプールに切り替えることで、エラーなしでプログラムを実行できました。前に述べたように、私の同僚のマシンは、統合アプリケーションプールでプログラムを正常に実行しています。しかし、私のマシンでは、これによりスレッドの問題が発生します。

したがって、それ自体は満足のいく「答え」ではありません。それでも、私には解決策があります。

于 2013-02-07T15:59:08.227 に答える