4

SocketIO4Netを使用してC#でSocket.IOに接続していますが、クライアントにオブジェクトを発行しようとすると、C#アプリケーションが突然閉じられます(MVC3プロジェクトがあります)

イベントビューアを読みましたが、3つのエラーがあります。

1)

A Webhost unhandled exception occurred.
 Sender Information: System.AppDomain/26995560
 Exception: System.Runtime.FatalException: Object reference not set to an instance of an object. ---> System.NullReferenceException: Object reference not set to an instance of an object.

2)

An unhandled exception occurred and the process was terminated.

Application ID: /LM/W3SVC/2/ROOT

Process ID: 3696

Exception: System.Runtime.FatalException

Message: Object reference not set to an instance of an object.

3)

Application: w3wp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Runtime.FatalException
Stack:
   at System.Runtime.Fx+IOCompletionThunk.UnhandledExceptionFrame(UInt32, UInt32, System.Threading.NativeOverlapped*)
   at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)

私のプロジェクトの何が問題になっていますか?SocketIO4NETにバグはありますか?

4

1 に答える 1

0

最後に答えを見つけました。これは、.NETのバージョン(私は.NET 4を使用)とWCFduplexChannelが原因です。

WCFラッパークラスの先頭に次の属性を追加する必要があります。

[CallbackBehavior(UseSynchronizationContext=false)]

答えてくれたCauldwell.netに感謝します:http://www.cauldwell.net/patrick/blog/CategoryView,category,CodeGen.aspx

cauldwell.netから:

問題は、ASP.NETが(デフォルトで)SynchronizationContextと呼ばれる小さなものを使用することでした。私が知る限り(正直に言うと、これについては徹底的に調査していません)、コールバックがUIスレッドで実行されるようにするのが仕事のひとつであり、それによってControlを呼び出す必要がなくなります。 WinForms。私の場合、その追加のロックは何かに合うものを与えていて、それはもう周りにないスレッド、つまりNullReferenceExceptionをクリーンアップしようとしていました。

ジェームズに感謝します

于 2012-06-19T05:21:10.427 に答える