Hi

Ran into this issue this afternoon: Create new android app with the
following code

protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our button from the layout resource,
            // and attach an event to it
            Button button = FindViewById<Button>(Resource.Id.MyButton);

            button.Click += button_Click;
            ServicePointManager.ServerCertificateValidationCallback +=
validatedCertificate;
        }

        void button_Click(object sender, EventArgs e)
        {
            HttpWebRequest req = new HttpWebRequest(new
Uri(@"https://wsklo2059.dragonslair.net:8090/IsAlive/";));
            WebResponse res = req.GetResponse();
        }

        private bool validatedCertificate(object sender, X509Certificate
certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        {
            return true;
        }

But validatedCertificate is never called and pressing the button results in
a crash:

Unhandled Exception:

System.Net.WebException: Error getting response stream (Write: BeginWrite
failure): SendFailure
04-02 18:20:16.470 I/MonoDroid(18254): UNHANDLED EXCEPTION:
System.Net.WebException: Error getting response stream (Write: BeginWrite
failure): SendFailure ---> System.IO.IOException: BeginWrite failure
04-02 18:20:16.470 I/MonoDroid(18254):   at
System.Net.Sockets.NetworkStream.BeginWrite (System.Byte[] buffer, Int32
offset, Int32 size, System.AsyncCallback callback, System.Object state)
[0x00000] in <filename unknown>:0 
04-02 18:20:16.470 I/MonoDroid(18254):   at
Mono.Security.Protocol.Tls.RecordProtocol.BeginSendRecord (ContentType
contentType, System.Byte[] recordData, System.AsyncCallback callback,
System.Object state) [0x00000] in <filename unknown>:0 
04-02 18:20:16.470 I/MonoDroid(18254):   at
Mono.Security.Protocol.Tls.RecordProtocol.SendRecord (ContentType
contentType, System.Byte[] recordData) [0x00000] in <filename unknown>:0 
04-02 18:20:16.470 I/MonoDroid(18254):   at
Mono.Security.Protocol.Tls.RecordProtocol.SendAlert
(Mono.Security.Protocol.Tls.Alert alert) [0x00000] in <filename unknown>:0 
04-02 18:20:16.470 I/MonoDroid(18254):   at
Mono.Security.Protocol.Tls.RecordProtocol.SendAlert (AlertDescription
description) [0x00000] in <filename unknown>:0 
04-02 18:20:16.470 I/MonoDroid(18254):   at
Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback
(IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 
04-02 18:20:16.470 I/MonoDroid(18254):   --- End of inner exception stack
trace ---
04-02 18:20:16.470 I/MonoDroid(18254): at
System.Net.HttpWebRequest.EndGetResponse (System.IAsyncResult) <IL 0x00064,
0x002d0>
04-02 18:20:16.470 I/MonoDroid(18254): at
System.Net.HttpWebRequest.GetResponse () <IL 0x00010, 0x000d3>
04-02 18:20:16.470 I/MonoDroid(18254): at
AndroidApplication1.Activity1.button_Click (object,System.EventArgs)
[0x00011] in d:\Personal\Documents\Visual Studio
2012\Projects\AndroidApplication1\AndroidApplication1\Activity1.cs:43
04-02 18:20:16.470 I/MonoDroid(18254): at
Android.Views.View/IOnClickListenerImplementor.OnClick (Android.Views.View)
[0x0000b] in
/Users/builder/data/lanes/monodroid-mac-monodroid-4.4-series/6418373f/source/monodroid/src/Mono.Android/platforms/android-8/src/generated/Android.Views.View.cs:631
04-02 18:20:16.470 I/MonoDroid(18254): at
Android.Views.View/IOnClickListenerInvoker.n_OnClick_Landroid_view_View_
(intptr,intptr,intptr) [0x00010] in
/Users/builder/data/lanes/monodroid-mac-monodroid-4.4-series/6418373f/source/monodroid/src/Mono.Android/platforms/android-8/src/generated/Android.Views.View.cs:602
04-02 18:20:16.470 I/MonoDroid(18254): at (wrapper dynamic-method)
object.f0ff84a6-0b9e-431a-a87e-a29a586c1ef3 (intptr,intptr,intptr) <IL
0x00017, 0x00043>

This is on m4a 4.4.55 - I suspect that somewhere in the depths of mono, my
validation callback is being undone as the behavior is the same as if I
don't do this validation.

The same code works in a Winforms app so it's down to M4A.

I suppose I should upgrade to the latest... will give that a go and report
back if it fixes things.

Regards
Stephan



--
View this message in context: 
http://mono-for-android.1047100.n5.nabble.com/handling-webservices-with-self-signed-certificates-tp5713085.html
Sent from the Mono for Android mailing list archive at Nabble.com.
_______________________________________________
Monodroid mailing list
[email protected]

UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid

Reply via email to