Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.
Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. We will continue to work on open Bugzilla bugs, copy them to the new locations as needed for follow-up, and add the new items under Related Links.
Our sincere thanks to everyone who has contributed on this bug tracker over the years. Thanks also for your understanding as we make these adjustments and improvements for the future.
Please create a new report on Developer Community or GitHub with your current version information, steps to reproduce, and relevant error messages or log files if you are hitting an issue that looks similar to this resolved bug and you do not yet see a matching new report.
When using a WCF proxy client(derived using SlSvcUtil.exe) in a PCL, and referenced in Xamarin.IOS the following server response raises a "Not Implemented Exception": <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>s:Client</faultcode> <faultstring>The creator of this fault did not specify a Reason.</faultstring> <faultactor>Random</faultactor> <detail> <ns:ECFPFault xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns="http://RamiCorpSolutions/BusinessObjects" xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/"> <ns:ErrorCode>UNKNOWN</ns:ErrorCode> <ns:ErrorMsg>Unknown LoginName</ns:ErrorMsg> </ns:ECFPFault> </detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope> However, when the server responds with the following Messagae, the expected Faultexception<TDetail> is raised. <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>UNKNOWN</ErrorCode> <ErrorMsg>Unknown LoginName</ErrorMsg> </ECFPFault> </detail> </s:Fault> </s:Body> </s:Envelope> The only difference in the responses(other than general namespacing semantics) is the inclusion of the "FaultActor" element. I have referenced the PCL in a Console application and BOTH responses were handled correctly which leads me to conclusively assume the issue is in Mono's implementation of the WCF stack. Below is the Stack Trace: StackTrace " at (wrapper managed-to-native) System.Object:__icall_wrapper_mono_delegate_end_invoke (object,intptr)\n at (wrapper delegate-end-invoke) :end_invoke_object__this___object[]&_IAsyncResult (object[]&,System.IAsyncResult)\n at System.ServiceModel.MonoInternal.ClientRuntimeChannel.EndProcess (System.Reflection.MethodBase method, System.String operationName, System.Object[] parameters, IAsyncResult result) [0x00025] in /Users/builder/data/lanes/3412/3cf8aaed/source/maccore/_build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/src/mono/mcs/class/System.ServiceModel/System.ServiceModel/ClientRuntimeChannel.cs:460 \n at System.ServiceModel.ClientBase1+ChannelBase1[TChannel,T].EndInvoke (System.String methodName, System.Object[] args, IAsyncResult result) [0x0003c] in /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:404 \n at ECFPLib.ECFPService.ECFPServiceClient+ECFPServiceClientChannel.EndLogin (IAsyncResult result) [0x00010] in /Users/ramiayyad/Documents/RDC Connections/Bonobo.Git.Server/ECFP.git/ECFPLib/Service References/ECFPService/Reference.cs:2778 \n at ECFPLib.ECFPService.ECFPServiceClient.ECFPLib.ECFPService.IECFPService.EndLogin (IAsyncResult result) [0x00008] in /Users/ramiayyad/Documents/RDC Connections/Bonobo.Git.Server/ECFP.git/ECFPLib/Service References/ECFPService/Reference.cs:1939 \n at ECFPLib.ECFPService.ECFPServiceClient.OnEndLogin (IAsyncResult result) [0x00003] in /Users/ramiayyad/Documents/RDC Connections/Bonobo.Git.Server/ECFP.git/ECFPLib/Service References/ECFPService/Reference.cs:1949 \n at System.ServiceModel.ClientBase`1+c__AnonStorey0[TChannel].<>m__0 (IAsyncResult ar) [0x00006] in /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 " string The FaultContract was defined as follows: [DataContract(Namespace = "http://RamiCorpSolutions/BusinessObjects")] public class ECFPFault { [DataMember] public ErrorCode ErrorCode { get; set; } [DataMember] public string ErrorMsg { get; set; } } With a sample interface defined as: [OperationContract] [FaultContract(typeof(ECFPFault), Namespace = "http://RamiCorpSolutions/BusinessObjects")] String Login(string Username, string Password); Final note, If you're wondering how the service was implemented, we took the WSDL generated by WCF and implemented in another platform(WSDL first approach).
Please include a small test case so we can reproduce the issue also all version informations of yours. The easiest way to get exact version information is to use the "Xamarin Studio" menu, "About Xamarin Studio" item, "Show Details" button and copy/paste the version informations (you can use the "Copy Information" button).
Xamarin Studio Community Version 6.0.1 (build 9) Installation UUID: e25951a0-f9cb-4eec-a141-04474014d095 Runtime: Mono 4.4.1 (mono-4.4.0-branch-c7sr0/4747417) (64-bit) GTK+ 2.24.23 (Raleigh theme) Package version: 404010000 Xamarin.Profiler Not Installed Apple Developer Tools Xcode 7.3.1 (10188.1) Build 7D1014 Xamarin.iOS Version: 9.8.1.4 (Xamarin Studio Community) Hash: 3cf8aae Branch: c7sr0 Build date: 2016-06-20 16:09:58-0400 Xamarin.Android Version: 6.1.1.1 (Xamarin Studio Community) Android SDK: /Users/ramiayyad/Library/Developer/Xamarin/android-sdk-macosx Supported Android versions: 4.0.3 (API level 15) 4.4 (API level 19) 6.0 (API level 23) SDK Tools Version: 24.4.1 SDK Platform Tools Version: 23.0.1 SDK Build Tools Version: 23.0.1 Java SDK: /usr java version "1.7.0_71" Java(TM) SE Runtime Environment (build 1.7.0_71-b14) Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode) Android Designer EPL code available here: https://github.com/xamarin/AndroidDesigner.EPL Xamarin Android Player Not Installed Xamarin.Mac Version: 2.8.1.4 (Xamarin Studio Community) Build Information Release ID: 600010009 Git revision: e879ce52093257c5c386ad7e390dfaa937fa7f90 Build date: 2016-06-24 11:53:43-04 Xamarin addins: a9252e6df4851fbbed1f9c6228e7b6dd1b475ac5 Build lane: monodevelop-lion-cycle7-sr0 Operating System Mac OS X 10.11.4 Darwin Ramis-MacBook-Air.local 15.4.0 Darwin Kernel Version 15.4.0 Fri Feb 26 22:08:05 PST 2016 root:xnu-3248.40.184~3/RELEASE_X86_64 x86_64
Created attachment 16566 [details] Definitive Test Solution That Shows the Problem The attached solution definitively proves the issue is due to the Addition of the <FaultActor> element. The sample solution provides a PCL with the WCF client along with a simple server that generates a 2 fault soap messages. The messages are identical except for one containing the <FaultActor> element. When the PCL is referenced in an IOS project, The message which generates the Soap Fault with the <FaultActor> element raises a "Not Implemented Exception". When the PCL is referenced in a Console Application(also included in the project), Both Soap Messages are handled.
Am I allowed to set this to "Confirmed".
As a work around, is there anyway to have the client modify the incoming message before parsing it? In regular WCF we would do this using IClientMessageInspector and implementing the AfterReceiveReply method. Unfortunately, I dont think we can do the same with Silverlight WCF. Or can we?
Added information. Please let me know if more info is needed.
Hey Marcos, Could you take a look at this one?
Is this bug resolved ?
I dont think it's resolved yet. I'm wrapping my faults in a regular output message now. Not Ideal. I wish there was a way my service would remove the faultactor element but it can't
I opened a PR with a fix in https://github.com/mono/mono/pull/3894
Merged to Mono master/213bce206b46a94c5a80aad2965a45f2aff675f5 and mono-4.8.0-branch/e6b9ba890809d7d24a5411085a6f76b63ffa58a5
@Alex, I have checked this issue with latest master build and observed that I am still getting exception on EndFaultGeneratingMethod Here is the screencast for the same: https://www.screencast.com/t/rIfReePxat
@asimk the exception you're getting says "There was no endpoint listening at http://10.144.199.172:6968/NoFaultActorEndPoint ....". This is expected since I assume you don't have the service running on IP 10.144.199.172 which the repro project uses. Try changing to the IP of your machine. Since you're not getting the NotImplemented exception that this bug was about, I'm setting this back to resolved/fixed.
I set the IP of fault generating server to the ip address of the machine that host the server. But when I click on No fault Actor or With fault Actor, I am getting a message that "Did not catch custom fault". I am closing this issue since I am not getting any exception. ## Test Env: https://gist.github.com/GouriKumari/656b3eec66c1543d4a703c461b61b529 ##Screenshot: https://www.screencast.com/t/SFoaZXs18vkF