简体   繁体   English

Synergy dbr.exe在xcall期间获取System.ServiceModel.FaultException

[英]Synergy dbr.exe getting System.ServiceModel.FaultException during xcall

We have Synergy application that uses Synergy's xcall function to load a (COM interop?) assembly (ImageRetrieval.dll) and call methods from it. 我们有一个Synergy应用程序,该应用程序使用Synergy的xcall函数来加载(COM interop?)程序集(ImageRetrieval.dll)并从中调用方法。

This particular method call is a service call to a web service (ImageRetrievalService.asmx) running in DotNetNuke hosted on another server at the same location. 此特定方法调用是对在同一位置的另一台服务器上托管的DotNetNuke中运行的Web服务(ImageRetrievalService.asmx)的服务调用。

Before we updated the web service, this call was working just fine, but we changed the application pool from the 2.0 CLR to the 4.0 CLR as part of updating our projects to leverage the new (in .net 4.0) Task Parallel Library. 在更新Web服务之前,此调用工作正常,但是在更新项目以利用新的(在.net 4.0中)任务并行库的过程中,我们将应用程序池从2.0 CLR更改为4.0 CLR。 We also modified the web.config for the web application, but we didn't remove anything, we only added an assembly name after a type name in a reference, and added the preCondition="runtimeVersionv2.0" to the svc-Integrated handler. 我们还为Web应用程序修改了web.config,但是我们没有删除任何内容,我们仅在引用中的类型名称之后添加了程序集名称,并将preCondition =“ runtimeVersionv2.0”添加到了svc-Integrated处理程序中。

The Synergy application is blowing up with a Watson Bucket problem signature of the following Synergy应用程序因以下的Watson Bucket问题签名而破灭

Description:
  Stopped working

Problem signature:
  Problem Event Name: CLR20r3                
  Problem Signature 01: dbr.exe             //EXE file name
  Problem Signature 02: 9.5.1.3             //EXE file assembly version number
  Problem Signature 03: 4e95fcb0            //EXE File Stamp
  Problem Signature 04: System.ServiceModel //Faulting assembly version
  Problem Signature 05: 4.0.0.0             //Faulting assembly version
  Problem Signature 06: 5073e42b            //Faulting assembly timestamp
  Problem Signature 07: 575d                //Faulting assembly method def
  Problem Signature 08: 205                 //Faulting method IL Offset within the faulting method
  Problem Signature 09: System.ServiceModel.FaultException //Exception type
  OS Version:      6.0.6002.2.2.0.272.7
  Locale ID:           1033

After using ILDASM to decompile the System.ServiceModel 4.0.0.0 assembly and look up the method with signature / 0600575d / I was able to find out it is the System.ServiceModel.Dispatcher.BufferedReceiveBinder.TryReceive method that the exception is occurring in. 使用ILDASM反编译System.ServiceModel 4.0.0.0程序集并查找带有签名/ 0600575d的方法后,我能够发现发生异常的是System.ServiceModel.Dispatcher.BufferedReceiveBinder.TryReceive方法。

public bool TryReceive(TimeSpan timeout, out RequestContext requestContext)
{
    if (Interlocked.CompareExchange(ref this.pendingOperationSemaphore, 1, 0) == 0)
    {
        ActionItem.Schedule(tryReceive, this);
    }

    RequestContextWrapper wrapper;
    bool success = this.inputQueue.Dequeue(timeout, out wrapper);

    if (success && wrapper != null)
    {
        requestContext = wrapper.RequestContext;
    }
    else
    {
        requestContext = null;
    }

    return success;
}

I can't tell whether this is happening in the Synergy application, the ImageRetrieval.dll, or the ImageRetrievalService.asmx, but it sounds like it might be making the jump from ImageRetrieval.dll to ImageRetrievalService.asmx, but for some reason it doesn't understand the message? 我无法确定这是否发生在Synergy应用程序,ImageRetrieval.dll或ImageRetrievalService.asmx中,但听起来它可能正在从ImageRetrieval.dll跳至ImageRetrievalService.asmx,但由于某种原因,它没有不明白讯息吗?

The IL decompiled (I don't see an IL offset that matches the offset from Problem Signature 08, 205) 已反编译的IL(我看不到与Problem Signature 08、205的偏移量匹配的IL偏移量)

.method /*0600575D*/ private hidebysig static 
        void  TryReceive(object state) cil managed
{
  // Code size       108 (0x6c)
  .maxstack  3
  .locals /*11000D10*/ init (class System.ServiceModel.Dispatcher.BufferedReceiveBinder/*02000912*/ V_0,
           class System.ServiceModel.Channels.RequestContext/*0200009B*/ V_1,
           bool V_2,
           class [mscorlib/*23000001*/]System.Exception/*0100000A*/ V_3)
  IL_0000:  ldarg.0
  IL_0001:  castclass  System.ServiceModel.Dispatcher.BufferedReceiveBinder/*02000912*/
  IL_0006:  stloc.0
  IL_0007:  ldc.i4.0
  IL_0008:  stloc.2
  .try
  {
    .try
    {
      IL_0009:  ldloc.0
      IL_000a:  ldfld      class System.ServiceModel.Dispatcher.IChannelBinder/*020008F4*/ System.ServiceModel.Dispatcher.BufferedReceiveBinder/*02000912*/::channelBinder /* 04002C8D */
      IL_000f:  ldsfld     valuetype [mscorlib/*23000001*/]System.TimeSpan/*01000002*/ [mscorlib/*23000001*/]System.TimeSpan/*01000002*/::MaxValue /* 0A000133 */
      IL_0014:  ldloca.s   V_1
      IL_0016:  callvirt   instance bool System.ServiceModel.Dispatcher.IChannelBinder/*020008F4*/::TryReceive(valuetype [mscorlib/*23000001*/]System.TimeSpan/*01000002*/,
                                                                                                               class System.ServiceModel.Channels.RequestContext/*0200009B*/&) /* 060055CD */
      IL_001b:  brfalse.s  IL_0030

      IL_001d:  ldloc.0
      IL_001e:  ldfld      class [System.ServiceModel.Internals/*23000002*/]System.Runtime.InputQueue`1/*01000020*/<class System.ServiceModel.Dispatcher.BufferedReceiveBinder/*02000912*//RequestContextWrapper/*02000913*/> System.ServiceModel.Dispatcher.BufferedReceiveBinder/*02000912*/::inputQueue /* 04002C8E */
      IL_0023:  ldloc.1
      IL_0024:  newobj     instance void System.ServiceModel.Dispatcher.BufferedReceiveBinder/*02000912*//RequestContextWrapper/*02000913*/::.ctor(class System.ServiceModel.Channels.RequestContext/*0200009B*/) /* 06005762 */
      IL_0029:  ldnull
      IL_002a:  callvirt   instance bool class [System.ServiceModel.Internals/*23000002*/]System.Runtime.InputQueue`1/*01000020*/<class System.ServiceModel.Dispatcher.BufferedReceiveBinder/*02000912*//RequestContextWrapper/*02000913*/>/*1B00059B*/::EnqueueWithoutDispatch(!0,
                                                                                                                                                                                                                                                                                class [mscorlib/*23000001*/]System.Action/*0100001D*/) /* 0A00203F */
      IL_002f:  stloc.2
      IL_0030:  leave.s    IL_004d

    }  // end .try
    catch [mscorlib/*23000001*/]System.Exception/*0100000A*/ 
    {
      IL_0032:  stloc.3
      IL_0033:  ldloc.3
      IL_0034:  call       bool [System.ServiceModel.Internals/*23000002*/]System.Runtime.Fx/*010000DA*/::IsFatal(class [mscorlib/*23000001*/]System.Exception/*0100000A*/) /* 0A0000CE */
      IL_0039:  brfalse.s  IL_003d

      IL_003b:  rethrow
      IL_003d:  ldloc.0
      IL_003e:  ldfld      class [System.ServiceModel.Internals/*23000002*/]System.Runtime.InputQueue`1/*01000020*/<class System.ServiceModel.Dispatcher.BufferedReceiveBinder/*02000912*//RequestContextWrapper/*02000913*/> System.ServiceModel.Dispatcher.BufferedReceiveBinder/*02000912*/::inputQueue /* 04002C8E */
      IL_0043:  ldloc.3
      IL_0044:  ldnull
      IL_0045:  callvirt   instance bool class [System.ServiceModel.Internals/*23000002*/]System.Runtime.InputQueue`1/*01000020*/<class System.ServiceModel.Dispatcher.BufferedReceiveBinder/*02000912*//RequestContextWrapper/*02000913*/>/*1B00059B*/::EnqueueWithoutDispatch(class [mscorlib/*23000001*/]System.Exception/*0100000A*/,
                                                                                                                                                                                                                                                                                class [mscorlib/*23000001*/]System.Action/*0100001D*/) /* 0A002040 */
      IL_004a:  stloc.2
      IL_004b:  leave.s    IL_004d

    }  // end handler
    IL_004d:  leave.s    IL_006b

  }  // end .try
  finally
  {
    IL_004f:  ldloc.0
    IL_0050:  ldflda     int32 System.ServiceModel.Dispatcher.BufferedReceiveBinder/*02000912*/::pendingOperationSemaphore /* 04002C8F */
    IL_0055:  ldc.i4.0
    IL_0056:  call       int32 [mscorlib/*23000001*/]System.Threading.Interlocked/*01000291*/::Exchange(int32&,
                                                                                                        int32) /* 0A0009AE */
    IL_005b:  pop
    IL_005c:  ldloc.2
    IL_005d:  brfalse.s  IL_006a

    IL_005f:  ldloc.0
    IL_0060:  ldfld      class [System.ServiceModel.Internals/*23000002*/]System.Runtime.InputQueue`1/*01000020*/<class System.ServiceModel.Dispatcher.BufferedReceiveBinder/*02000912*//RequestContextWrapper/*02000913*/> System.ServiceModel.Dispatcher.BufferedReceiveBinder/*02000912*/::inputQueue /* 04002C8E */
    IL_0065:  callvirt   instance void class [System.ServiceModel.Internals/*23000002*/]System.Runtime.InputQueue`1/*01000020*/<class System.ServiceModel.Dispatcher.BufferedReceiveBinder/*02000912*//RequestContextWrapper/*02000913*/>/*1B00059B*/::Dispatch() /* 0A002041 */
    IL_006a:  endfinally
  }  // end handler
  IL_006b:  ret
} // end of method BufferedReceiveBinder::TryReceive

Edit : Forgot to add the Event Viewer log 编辑 :忘记添加事件查看器日志

Application: dbr.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ServiceModel.FaultException
Stack:

Server stack trace: 
   at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, 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.HandleReturnMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessage)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(System.Runtime.Remoting.Proxies.MessageData ByRef, Int32)
   at ImageRetrievalLib.DataService.DataServiceSoap.RetrieveDocuments(ImageRetrievalLib.DataService.RetrieveDocumentsRequest)
   at ImageRetrievalLib.DataService.DataServiceSoapClient.ImageRetrievalLib.DataService.DataServiceSoap.RetrieveDocuments(ImageRetrievalLib.DataService.RetrieveDocumentsRequest)
   at ImageRetrievalLib.DataService.DataServiceSoapClient.RetrieveDocuments(Byte[], Byte[])
   at ImageRetrievalLib.DocumentRetrieval.RetrieveDocuments(System.String, System.String, System.String, System.String)
   at ImageRetrievalLib.ImageRetrieval.RetrieveDocuments(System.String, System.String, System.String, System.String)

This ended up just being caused by an incorrect Identity property set for the app pool in IIS on the machine that was hosting the ImageRetrievalService.asmx. 最终这是由于在托管ImageRetrievalService.asmx的计算机上的IIS中为应用程序池设置的身份属性设置不正确引起的。

The Identity was set to ApplicationPoolIdentity, and that is apparently a temporary profile, so since we changed the app pool CLR from 2.0 to 4.0, ASP.NET 4.0 doesn't allow temporary profiles to validate with the DSACryptoServiceProvider that the service used. Identity设置为ApplicationPoolIdentity,这显然是一个临时配置文件,因此,由于我们将应用程序池CLR从2.0更改为4.0,因此ASP.NET 4.0不允许临时配置文件通过DSACryptoServiceProvider验证该服务使用的身份。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 System.dll中的System.ServiceModel.FaultException - System.ServiceModel.FaultException in System.dll 如何克服System.ServiceModel.FaultException - how to overcome System.ServiceModel.FaultException System.ServiceModel.FaultException - 如何解决这个问题 - System.ServiceModel.FaultException - how to solve this System.ServiceModel.dll中的“ System.ServiceModel.FaultException”:过程不存在 - 'System.ServiceModel.FaultException' in System.ServiceModel.dll: Procedure not present 自承载WCF和System.ServiceModel.FaultException - Self-Hosting WCF and System.ServiceModel.FaultException System.ServiceModel.FaultException - System.ServiceModel.FaultException<DefaultFaultContract not catching some exceptions WCF单元测试结果在System.ServiceModel.FaultException中 - WCF Unit Testing Results in a System.ServiceModel.FaultException 如何解决此错误“ System.ServiceModel.FaultException” - How can i solve this error “System.ServiceModel.FaultException” 在Dynamics CRM中将RetrieveMultiple与FetchXML一起使用时,出现“ System.ServiceModel.FaultException`1” - 'System.ServiceModel.FaultException`1' when using RetrieveMultiple with FetchXML in Dynamics CRM XAMARIN.ANDROID 应用出现 System.ServiceModel.FaultException - XAMARIN ANDROID app got System.ServiceModel.FaultException
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM