带有意外标头错误的WCF RESTful调用

时间:2012-09-22 02:47:23

标签: c# wcf rest

使用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诊断过程正在添加自己的。

我的理解是,在过去,没有使用MessageHeaders.Add进行基于REST的标头操作。这是WCF诊断区域中的错误/配置错误吗?我应该在哪里解决这个问题?

额外:有趣的是,即使出现此错误,WCF REST调用也能正常工作。然而,最终超时会导致整个事情失败。但是不能说超时是否与此相关。

0 个答案:

没有答案