我正在开发 WCF 服务,并在 Cassini 中对其进行测试。我还有一个控制台应用程序和一个网络参考。到 cassini 中托管的 svc。这工作正常,我可以调用服务方法。但是当我将 svc 部署到 IIS 并尝试运行到控制台应用程序时,我收到了这个错误。
System.ServiceModel.FaultException`1 未处理
消息=反序列化消息 NotifRQRequest 中的标头之一时出错。有关更多详细信息,请参阅 InnerException。
源=mscorlib服务器堆栈跟踪:在 System.ServiceModel.Channels.ServiceChannel.HandleReply (ProxyOperationRuntime operation, ProxyRpc& rpc)在
System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter) 。 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 在 System.ServiceModel.Channels.ServiceChannel.Call (String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 。 ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 在 [0] 处重新抛出异常:
在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 类型)
在 TestConsole.ServiceReference1.IPush.RQ(NotifRQRequest 请求)
在 TestConsole.ServiceReference1.PushClient.TestConsole.ServiceReference1.IPush.NotifRQ(NotifRQRequest request) 在 ServiceReference1\Reference.cs:line 37165
在 TestConsole.ServiceReference1.Client.RQ(Security Security, Action Action, MessageID MessageID, ReplyTo ReplyTo, To To ,NotifRQ notifRQ1)ServiceReference1\Reference.cs: 在 System.AppDomain._nExecuteAssembly(RuntimeAssembly 程序集,String[] args)
的 TestConsole.Program.Main(String[] args)的第 37176 行
在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
在 System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
我正在运行 x64 环境。甚至尝试更改为不同的应用程序池。
任何建议或后盾将不胜感激。
谢谢,
编辑1:只注意到一件事。svc 使用 wsdl 中列出的大约 5 个 xml 命名空间。在卡西尼中,我可以浏览然后我可以点击 localhost/Notification/NotificationService.svc?xsd=xsd0 但我不能在 IIS 上做同样的事情!!!
<xsd:schema targetNamespace="http://www.opentravel.org/OTA/2003/05/Imports">
<xsd:import schemaLocation="http://localhost/Notification/NotificationService.svc?xsd=xsd0" namespace="http://www.opentravel.org/OTA/2003/05"/>
<xsd:import schemaLocation="http://localhost/Notification/NotificationService.svc?xsd=xsd1" namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"/>
<xsd:import schemaLocation="http://localhost/Notification/NotificationService.svc?xsd=xsd3" namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing"/>
<xsd:import schemaLocation="http://localhost/Notification/NotificationService.svc?xsd=xsd2" namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"/>
<xsd:import schemaLocation="http://p/Notification/NotificationService.svc?xsd=xsd4" namespace="http://htng.org/2011A"/>
</xsd:schema>
编辑 2:这似乎只发生在 64 位机器上,并且在 32 位机器上运行良好。