のコールバックから、WCFるASP.NET 可能ですか?
-
26-09-2019 - |
質問
私のウェブサイトで開催されるIISの異なるボックス、WCFサービスの開催をWindowsのサービスで異なる。(N tierアプローチ。ここでは、Webサービスは、クライアントのために、WCFサービスです。の要求ファイルのアップロード、IIS主催Webサービスは、このIISを開催Webサービスに戻す通話を、WCFサービスとは、実際にアップロード。※これまでの方が良さそうですね。後のアップロードが行われ、WCFサービスを行うコールバックしてくれてありがとうございます保存、アプリケーショ辞書いて(InstanceContextMode=InstanceContextMode.PerSession,ConcurrencyMode=ConcurrencyMode.複数)).は、WCFサービス、コールバック.の微量ビューアなんだかとってもおいしそうにASP.NET のコールバックでアップロードのページをブラウザは、エンドユーザー)凍結させないようにしてください。を使用していChunkingChannel結合によるlarsw.
まず、がれきの実施上記のシナリオとジョン-Saundarsこのリンク:
忘れてしまいましたOperationContext.ます。GetCallbackChannel"実際にかがですか?
のです。
解決 2
これはweiredされ、私はコンピュータを再起動し、現在クライアント(ASP.NET)側にトレースビューアに次のようになっていますし、またページは現在、(応答しない)フリーズしません。 System.NullReferenceException、mscorlibおよびオブジェクト参照ではない...
と言う:ほとんどの懸念は、私はその内部例外であることを示すメッセージ私は、WCFサービスのクライアントとしてコンソールアプリケーションで試してみました。コールバックは、素晴らしい作品。それは私が(復帰に呼び出しがアップロード/成功しなかったことを通知するために、クライアントに)ファイルをアップロードするにはIISとコールWCFサービスで私のウェブサイトをホストするときだけです。
(私はHttpChunkingBindingを使用しています)。 任意のアイデア?
System.Runtime.FatalException、 System.Runtime.DurableInstancing、バージョン= 4.0.0.0は、文化は、ニュートラル= なPublicKeyToken = 31bf3856ad364e35オブジェクト 参照は、オブジェクトのインスタンスに設定されていません。 に System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& RPC)で System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& System.ServiceModel.Dispatcher.MessageRpc.ProcessでRPC)(ブール isOperationContextSet)で System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContextの 要求、ブーリアンcleanThread、のOperationContext currentOperationContext)で System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContextの リクエスト、のOperationContext currentOperationContext)で System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(たIAsyncResult 結果)で System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(たIAsyncResult 結果)で System.ServiceModel.Diagnostics.TraceUtility。<> C_ のDisplayClass4。
B の_2(AsyncCallback コールバック、IAsyncResultインター結果)で、 System.Runtime.AsyncResult.Complete(ブールcompletedSynchronously)で System.Runtime.InputQueue1.AsyncQueueReader.Set(Item item) at System.Runtime.InputQueue
1.Dispatch()で System.ServiceModel.Channels.ReliableDuplexSessionChannel.ProcessDuplexMessage(WsrmMessageInfo インフォ)で System.ServiceModel.Channels.ReliableDuplexSessionChannel.HandleReceiveComplete(たIAsyncResult 結果)で System.ServiceModel.Channels.ReliableDuplexSessionChannel.OnReceiveCompletedStatic(たIAsyncResult 結果)で System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(たIAsyncResult 結果)System.Runtime.AsyncResult.Complete(ブールで completedSynchronously)で System.ServiceModel.Channels.ReliableChannelBinder1.InputAsyncResult
1.OnInputComplete(たIAsyncResult 結果)で System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(たIAsyncResult 結果)で System.ServiceModel.Diagnostics.TraceUtility。<> C_ のDisplayClass4。B の_2(AsyncCallback コールバック、IAsyncResultインター結果)で、 System.Runtime.AsyncResult.Complete(ブールcompletedSynchronously)で System.Runtime.InputQueue1.AsyncQueueReader.Set(Item item) at System.Runtime.InputQueue
1.Dispatch()で System.Runtime.ActionItem.DefaultActionItem.Invoke()で System.Runtime.ActionItem.CallbackHelper.InvokeWithoutContext(オブジェクト 状態)で、 System.Runtime.IOThreadScheduler.ScheduledOverlapped.IOCallback(UInt32型 errorCode、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.FatalException:オブジェクト参照ではありません オブジェクトのインスタンスに設定されています。 ---> System.NullReferenceException:オブジェクト参照がインスタンスに設定されていません オブジェクトの。に System.Web.HttpApplication.ThreadContext.Enter(ブール setImpersonationContext)で System.Web.HttpApplication.OnThreadEnterPrivate(ブール setImpersonationContext)で System.Web.AspNetSynchronizationContext.CallCallbackPossiblyUnderLock(SendOrPostCallback コールバック、オブジェクトの状態)で、 System.Web.AspNetSynchronizationContext.CallCallback(SendOrPostCallback コールバック、オブジェクトの状態)で、 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& 内部例外スタックトレースのRPC)---終わり---で System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& RPC)で System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& System.ServiceModel.Dispatcher.MessageRpc.ProcessでRPC)(ブール isOperationContextSet)で System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContextの 要求、ブールcleanThread、のOperationContext currentOperationContext)で System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContextの リクエスト、のOperationContext currentOperationContext)で System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(たIAsyncResult 結果)で System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(たIAsyncResult 結果)で System.ServiceModel.Diagnostics.TraceUtility。<> C_ のDisplayClass4。B の_2(AsyncCallback コールバック、IAsyncResultインター結果)で、 System.Runtime.AsyncResult.Complete(ブールcompletedSynchronously)
System.Runtime.InputQueue1.AsyncQueueReader.Set(Item item) at System.Runtime.InputQueue
1.Dispatchで()で System.ServiceModel.Channels.ReliableDuplexSessionChannel.ProcessDuplexMessage(WsrmMessageInfo インフォ)で System.ServiceModel.Channels.ReliableDuplexSessionChannel.HandleReceiveComplete(たIAsyncResult 結果)で System.ServiceModel.Channels.ReliableDuplexSessionChannel.OnReceiveCompletedStatic(たIAsyncResult 結果)で System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(たIAsyncResult 結果)System.Runtime.AsyncResult.Complete(ブールで completedSynchronously)で System.ServiceModel.Channels.ReliableChannelBinder1.InputAsyncResult
1.OnInputComplete(たIAsyncResult 結果)で System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(たIAsyncResult 結果)で System.ServiceModel.Diagnostics.TraceUtility。<> C_ のDisplayClass4。B の_2(AsyncCallback コールバック、IAsyncResultインター結果)で、 System.Runtime.AsyncResult.Complete(ブールcompletedSynchronously)
System.Runtime.InputQueue1.AsyncQueueReader.Set(Item item) at System.Runtime.InputQueue
1.Dispatchで()で System.Runtime.ActionItem.DefaultActionItem.Invoke()で System.Runtime.ActionItem.CallbackHelper.InvokeWithoutContext(オブジェクト 状態)で、 System.Runtime.IOThreadScheduler.ScheduledOverlapped.IOCallback(UInt32型 errorCode、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.NullReferenceException、mscorlib、 バージョン= 4.0.0.0、文化=中立、 なPublicKeyToken = b77a5c561934e089オブジェクト 参照は、オブジェクトのインスタンスに設定されていません。 System.Web.HttpApplication.ThreadContext.Enter(ブール値で setImpersonationContext)で System.Web.HttpApplication.OnThreadEnterPrivate(ブール setImpersonationContext)で System.Web.AspNetSynchronizationContext.CallCallbackPossiblyUnderLock(SendOrPostCallback コールバック、オブジェクトの状態)で、 System.Web.AspNetSynchronizationContext.CallCallback(SendOrPostCallback コールバック、オブジェクトの状態)で、 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& RPC)System.NullReferenceException: オブジェクト参照がオブジェクトインスタンスに設定されていません。に System.Web.HttpApplication.ThreadContext.Enter(ブール setImpersonationContext)で System.Web.HttpApplication.OnThreadEnterPrivate(ブール setImpersonationContext)で System.Web.AspNetSynchronizationContext.CallCallbackPossiblyUnderLock(SendOrPostCallback コールバック、オブジェクトスタットe)に System.Web.AspNetSynchronizationContext.CallCallback(SendOrPostCallback コールバック、オブジェクトの状態)で、 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& RPC)
他のヒント
などを利用することによる"凍結"を、これだけで更新されないことになりに応じ.
っているのかもしれませんの対応はaspページはブラウザに送信されます前回答が得られるウェブサーバから、wcfサービスです。この場合にはaspページを取得しません更新された結果なっています。
す2つのオプション:
- 利用のjavascriptをポーリングサーバの間で変化します。
- ブロックのアップロードページの管理のもと保からの回答が受領サービスです。
まendupのを待って呼び返しに、このような請求に対応す。
もう一つprobliemは、wcfプロキシクライアントが閉じる前にコールバックを受信します。トレースしないで復帰したが、誰にもできます。