Nginx + FastCGI-Mono-Server を使用して、小さな asp.net Web サービスをホストしています。FastCGI-Mono-Server2 (.Net 2.0 バージョン) を使用して正常に動作しています。asp.net アプリを .net 4.0 にアップグレードする必要があります。つまり、FastCGI-Mono-Server4 にアップグレードする必要があります。すべての正しいファイルを配置しました。できます!ただし、不可解なエラーで一貫してクラッシュします。
エラーは次のとおりです。
例外: System.Runtime.FatalException
メッセージ: オブジェクト参照がオブジェクトのインスタンスに設定されていません。
スタックトレース: System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc) で System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) で System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc) で System.ServiceModel.Dispatcher System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) の .ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc) System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) の System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet) System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump (RequestContext 要求、ブール値の cleanThread、OperationContext currentOperationContext) で System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext request, OperationContext currentOperationContext) で System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult 結果) で System.ServiceModel.Dispatcher.ChannelHandler.OnAsyncReceiveComplete(IAsyncResult 結果) で System. .Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult 結果) System.Runtime.AsyncResult.Complete で (Boolean completedSynchronously) System.ServiceModel.Channels.FramingDuplexSessionChannel.TryReceiveAsyncResult.OnReceive(IAsyncResult 結果) で System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame System.ServiceModel.Channels.SynchronizedMessageSource の System.Runtime.AsyncResult.Complete (Boolean completedSynchronously) で (IAsyncResult 結果)。System.ServiceModel.Channels.SessionConnectionReader.OnAsyncReadComplete(オブジェクト状態) で ReceiveAsyncResult.OnReceiveComplete(オブジェクト状態) Int32 bytesRead) の System.ServiceModel.Channels.OverlappedContext.CompleteCallback (UInt32 エラー、UInt32 numBytes、NativeOverlapped* nativeOverlapped) System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame (UInt32 エラー、UInt32 bytesRead、NativeOverlapped* nativeOverlapped) の System.Threading。 _IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode、UInt32 numBytes、NativeOverlapped* pOVERLAP)System.ServiceModel.Channels.SocketConnection.FinishRead() での OnAsyncReadComplete(オブジェクト状態) System.ServiceModel.Channels.SocketConnection.AsyncReadCallback(Boolean haveResult、Int32 エラー、Int32 bytesRead) で System.ServiceModel.Channels.OverlappedContext.CompleteCallback(UInt32 エラー) 、UInt32 numBytes、NativeOverlapped* nativeOverlapped) System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32 エラー、UInt32 bytesRead、NativeOverlapped* nativeOverlapped) で System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode、UInt32 numBytes、NativeOverlapped* pOVERLAP)System.ServiceModel.Channels.SocketConnection.FinishRead() での OnAsyncReadComplete(オブジェクト状態) System.ServiceModel.Channels.SocketConnection.AsyncReadCallback(Boolean haveResult、Int32 エラー、Int32 bytesRead) で System.ServiceModel.Channels.OverlappedContext.CompleteCallback(UInt32 エラー) 、UInt32 numBytes、NativeOverlapped* nativeOverlapped) System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32 エラー、UInt32 bytesRead、NativeOverlapped* nativeOverlapped) で System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode、UInt32 numBytes、NativeOverlapped* pOVERLAP)System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame での OverlappedContext.CompleteCallback (UInt32 エラー、UInt32 numBytes、NativeOverlapped* nativeOverlapped) (UInt32 エラー、UInt32 bytesRead、NativeOverlapped* nativeOverlapped) での System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode、UInt32 numBytes、 NativeOverlapped* pOVERLAP)System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame での OverlappedContext.CompleteCallback (UInt32 エラー、UInt32 numBytes、NativeOverlapped* nativeOverlapped) (UInt32 エラー、UInt32 bytesRead、NativeOverlapped* nativeOverlapped) での System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode、UInt32 numBytes、 NativeOverlapped* pOVERLAP)
内部例外: System.NullReferenceException
メッセージ: オブジェクト参照がオブジェクトのインスタンスに設定されていません。
スタック トレース: System.Web.HttpApplication.ThreadContext.Enter (ブール値 setImpersonationContext) で System.Web.HttpApplication.OnThreadEnterPrivate (ブール値 setImpersonationContext) で System.Web.AspNetSynchronizationContext.CallCallbackPossivelyUnderLock (SendOrPostCallback コールバック、オブジェクト状態) で System.Web.AspNetSynchronizationContext で。 System.ServiceModel.Dispatcher.ThreadBehavior.BindCore(MessageRpc& rpc、Boolean startOperation) で System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4 で System.Web.AspNetSynchronizationContext.Post(SendOrPostCallback コールバック、オブジェクト状態) (MessageRpc& rpc)
プロジェクトに IHttpAsyncHandler があります。それと何か関係があるのかしら。エラーを検索すると、この属性を推奨する人が見つかりました (このように: .net 4.0 に更新した後の wcf コールバック例外):
[CallbackBehavior(UseSynchronizationContext=false)]
私が言えることから、それは WCF のものであり、私の asp.net Web サーバーとは無関係です。どんなアイデアでも大歓迎です!
EV