2011-12-14 3 views
0

IIS 7、ASP.NET MVC 3、およびEF 4.2を使用して、私はその後、クライアント(まだ奇妙な何も)に送信し、データベースからコンテンツをロードする:ASP.NET 4、Entity Framework 4.2、IIS 7:IISを再起動するだけで不安定な動作が修正される?

var result = DB.Contacts.Select(p => new { id=p.ID, name=p.name }).ToList(); 
return Json(result); 

私たちは、それをテストし、それを承認した、としていそれは顧客で実行されます。これは、通常送り返すものです:

"[{"id":1,"name":"one"},{"id":2,"name":"two"}]" 

これは、我々がIISサービス(WWW)を再起動するまで停止しない、故障していたときに、それは送り返しです:

"[{"id":null,"name":null},{"id":null,"name":null}]" 

私たちは、避難所」 Windows 7上でVS 2010でデバッグしていて、デバッガが無作為にコードをステップ実行し、4行目から1行目に関数内でジャンプしてしまう関数内など

これを引き起こし、どのようにそれを避けますか?いくつかの異なる顧客の場所にあるいくつかの異なるサーバーとワークステーションでこれを体験しています。同じマシン上のほとんどの部分については、SQL Server 2008または2005の実行IIS 7と

+1

あなたの匿名オブジェクトでは 'text'プロパティを使用していますが、JSONでは' name'が表示されています。これはタイプミスですか?また、 'Contact'オブジェクトの' ID'プロパティはヌル可能な整数ですか? –

+2

リクエストごとに新しいデータコンテキストを作成していますか?または、複数のリクエスト(静的、グローバル変数、またはシングルトンを使用して)でコンテキストを共有していますか? –

+0

テキストと名前はタイプミスです。 IDは皮肉なことにnullableではありませんが、サーバーからのすべてのフィールドはnullです。 –

答えて

2

ジャンプの周りのデバッガで私が見てきたものです:

  • ある「と一致するようにソースコードが必要」
  • 無効デバッガが間違った記号(PDB)を使用しているアセンブリはリリースモードで構築された
  • ファイルIが役に立ったと評価していました

ことの一つは、VSで「モジュール」ビューを開くことで、作るデバッグしているアセンブリのPDBファイルが正しいことを確認してください。 DLLのタイムスタンプが正しいかどうか、またはパスを知っているかどうかを教えてください(サイトのデバッグ方法によって異なります)

上記の.NETコードの文脈がなければ、言い難いです。おそらく何かがあなたのセッションを殺しています...そして、あなたがアプリケーションプールやIISをリサイクルするまで、サイトはものを再初期化しません。

幸運を祈る!

編集:匿名オブジェクトのnull値をチェックするJson(..)の呼び出しの直前に、負荷テスターでページ/サイトにヒットし、ログやアサーションを挿入することがあります。アプリがしばらく使用された後に熟している老化の問題のように聞こえる。その場合、適切な負荷テストで再現可能な場合があります。

+0

Entity FrameworkでAutoMapper 2.0が使用されていることを除いて、複数のユーザーのためにDBコンテキストを再利用する可能性があります(コントローラが複数のユーザーに対して再利用される場合のみ)。MVC 3コントローラオブジェクトが複数のユーザー。 –

関連する問題