Xamarin WCF在FaultException <tdetail> BUG上Rasining NotImplementedException

时间:2016-06-28 05:30:30

标签: wcf xamarin printer-control-language faultexception

我想我在Xamarin中发现了一个关于WCF客户端的错误。看起来Xamarin不喜欢FaultException,它包含一个FaultActor元素。我的SLSVCUTIL生成的客户端驻留在PCL(配置文件78)中。引用此PCL是IOS项目。我的供应商公开的Web服务的wsdl公开了一个自定义的故障。当Web服务抛出错误时,不会引发错误,但有趣的是会引发“Notimplemented”异常。

还有几点说明:

  1. 在常规控制台应用程序中引用PCL时,我能够捕获FaultException并读取deatils。

  2. 在创建自己的WCF并自行提出相同的错误时,IOS应用程序可以捕获它!我在故障响应中看到的唯一区别是服务的WCF实现中缺少。

    以下是2条回复。

  3. WCF暴露的Web服务 - &GT;这适用于控制台和Xamarin IOS应用程序

    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
       <s:Body>
          <s:Fault>
             <faultcode>s:Client</faultcode>
             <faultstring xml:lang="en-US">The creator of this fault did not specify a Reason.</faultstring>
             <detail>
                <ECFPFault xmlns="http://RamiCorpSolutions/BusinessObjects" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                   <ErrorCode>PASSWORDEXPIRED</ErrorCode>
                   <ErrorMsg>Unknown LoginName</ErrorMsg>
                </ECFPFault>
             </detail>
          </s:Fault>
       </s:Body>
    </s:Envelope>
    

    供应商公开的Web服务响应 - &GT;这适用于控制台应用程序。在Xamarin IOS中不起作用。

      <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP-ENV:Body>
          <SOAP-ENV:Fault>
             <faultcode>SOAP-ENV:Server</faultcode>
             <faultstring>This is an operation implementation generated fault</faultstring>
             <faultactor/>
             <detail>
                <ns:ECFPFault xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns="http://RamiCorpSolutions/BusinessObjects">
                   <ns:ErrorCode>PASSWORDEXPIRED</ns:ErrorCode>
                   <ns:ErrorMsg>Unknown LoginName</ns:ErrorMsg>
                </ns:ECFPFault>
             </detail>
          </SOAP-ENV:Fault>
       </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    

    一些堆栈跟踪信息: StackTrace“at(包装器托管到本机)System.Object:__ icall_wrapper_mono_delegate_end_invoke(object,intptr)\ n at(wrapper delegate-end-invoke):end_invoke_object__this ___ object []&amp; _IAsyncResult(object []&amp;,System.IAsyncResult) \ n在/ Users / builder / data / lanes / 3412 /中的System.ServiceModel.MonoInternal.ClientRuntimeChannel.EndProcess(System.Reflection.MethodBase方法,System.String operationName,System.Object []参数,IAsyncResult结果)[0x00025] System.ServiceModel中的3cf8aaed / source / maccore / _build / Library / Frameworks / Xamarin.iOS.framework / Versions / git / src / mono / mcs / class / System.ServiceModel / System.ServiceModel / ClientRuntimeChannel.cs:460 \ n。 ClientBase 1+ChannelBase 1 [TChannel,T] .EndInvoke(System.String methodName,System.Object [] args,IAsyncResult result)[0x0003c] / Users / builder / data / lanes / 3412 / 3cf8aaed / source / maccore ECFPL的/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/System.ServiceModel/System.ServiceModel/ClientBase.cs:404 \ n / Users / ramiayyad / Documents / RDC Connections / Bonobo.Git.Server / ECFP.git / ECFPLib / Service References / ECFPService / Reference.cs:2778中的ib.ECFPService.ECFPServiceClient + ECFPServiceClientChannel.EndLogin(IAsyncResult result)[0x00010] n位于/ Users / ramiayyad / Documents / RDC Connections / Bonobo.Git.Server / ECFP.git / ECFPLib / Service References / ECFPService /中的ECFPLib.ECFPService.ECFPServiceClient.ECFPLib.ECFPService.IECFPService.EndLogin(IAsyncResult result)[0x00008] Reference.cs:1939 \ n,位于/ Users / ramiayyad / Documents / RDC Connections / Bonobo.Git.Server / ECFP.git / ECFPLib / Service References / ECFPService /中的ECFPLib.ECFPService.ECFPServiceClient.OnEndLogin(IAsyncResult result)[0x00003] Reference.cs:1949 \ n,位于/ Users / builder / data / lanes / 3412 / 3cf8aaed / source / maccore /_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/System.ServiceModel/System.ServiceModel/ClientBase.cs:242“串

    *** **** UPDATE 提出了一个错误:https://bugzilla.xamarin.com/show_bug.cgi?id=42226

    错误报告包含一个示例项目,该项目最终显示添加一个简单元素会导致问题。该方法是SOAP标准的一部分。

0 个答案:

没有答案