3

C# クライアントとサーバーが WCF を介して RESTful 呼び出しを行うと、クライアント トレースで次のエラーが表示されます。

「エンベロープ バージョン 'EnvelopeNone (http://schemas.microsoft.com/ws/2005/05/envelope/none)' は、メッセージ ヘッダーの追加をサポートしていません。」

完全なスタック トレースは次のとおりです。

System.InvalidOperationException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Envelope Version 'EnvelopeNone (http://schemas.microsoft.com/ws/2005/05/envelope/none)' does not support adding Message Headers.

at System.ServiceModel.Channels.MessageHeaders.ValidateHeaderKind(HeaderKind headerKind)
at System.ServiceModel.Channels.MessageHeaders.GetHeaderKind(MessageHeaderInfo headerInfo)
at System.ServiceModel.Channels.MessageHeaders.Insert(Int32 headerIndex, MessageHeader header)
at System.ServiceModel.Channels.MessageHeaders.Add(MessageHeader header)
at Microsoft.VisualStudio.Diagnostics.ServiceModelSink.DiagosticsMessage.AddHeader(String scheme, Boolean enableHttpHeaderUsage, Message message, Byte[] networkBuffer)
at Microsoft.VisualStudio.Diagnostics.ServiceModelSink.EnabledClientEventSink.BeforeSendMessage(Int32 eventingLevel, Message request, IClientChannel channel, ClientRuntime runtime, Boolean fCallback, Boolean fSupportAsmx)
at Microsoft.VisualStudio.Diagnostics.ServiceModelSink.StubClientEventSink.System.ServiceModel.Dispatcher.IClientMessageInspector.BeforeSendRequest(Message& request, IClientChannel channel)
at System.ServiceModel.Dispatcher.ImmutableClientRuntime.BeforeSendRequest(ProxyRpc& rpc)
at System.ServiceModel.Channels.ServiceChannel.PrepareCall(ProxyOperationRuntime operation, Boolean oneway, ProxyRpc& rpc)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at Fact.Apprentice.WorkflowServer.IWorkflowEngineBase.Dequeue(Int32 wfid, Int32 mqid)
at Fact.Apprentice.WorkflowTools.WorkflowProxyManager.ProcessCallback(Object state, Boolean timedOut)
at System.Threading._ThreadPoolWaitOrTimerCallback.WaitOrTimerCallback_Context(Object state, Boolean timedOut)
at System.Threading._ThreadPoolWaitOrTimerCallback.WaitOrTimerCallback_Context_t(Object state)
at System.Threading.ExecutionContext.runTryCode(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading._ThreadPoolWaitOrTimerCallback.PerformWaitOrTimerCallback(Object state, Boolean timedOut)

私の知る限り、ヘッダーは追加していません。ある種の .NET 診断プロセスが独自のものを追加しているようです。

私の理解では、過去には REST ベースのヘッダー操作に MessageHeaders.Add を使用していませんでした。これは、WCF 診断領域のバグまたは構成ミスですか? この問題を解決するにはどこを見ればよいですか?

補足: 興味深いことに、このエラーが発生しても、WCF REST 呼び出しは機能します。ただし、最終的にはタイムアウトによりすべてがダウンします。ただし、タイムアウトがこれに関連しているかどうかはわかりません。

4

0 に答える 0