Error connectie Silverlight met PHP/MySQL webservice

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik krijg telkens volgende error als ik mijn Silverlight app uitvoer:
"TargetInvocationException was unhandled by user code".

Ik ben al een ganse dag aan het zoeken waarom en hoe dit te verhelpen, en het blijkt dat het te maken zou hebben met de clientaccesspolicy.xml en crossdomain.xml files die in de root van de webservice zouden moeten staan. Deze staan daar dus ook, en nog krijg ik de foutmelding.

Hier de verschillende codes:

Silverlight app.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace DArchitectTestApplication201
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            WebClient webClient = new WebClient();
            webClient.DownloadStringCompleted += (s1, e1) => textBlock1.Text = e1.Result;
            webClient.DownloadStringAsync(new Uri("http://localhost/soap/client.php?id=" + textBox1.Text, UriKind.Absolute));
        }
    }
}


crossdomain.xml file:

XML:
1
2
3
4
5
6
7
<?xml version="1.0"?>
    <!DOCTYPE cross-domain-policy SYSTEM
     "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
    <cross-domain-policy>
       <allow-access-from domain="*"/ headers="SOAPAction" 
         secure="true">
    </cross-domain-policy>


clientaccesspolicy.xml file:

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
  <access-policy>
    <cross-domain-access>
      <policy>
        <allow-from http-request-headers="SOAPAction">
          <domain uri="*"/>
        </allow-from>
        <grant-to>
          <resource path="*" include-subpaths="true"/>
        </grant-to>
     </policy>
    </cross-domain-access>
  </access-policy>


De php webservice werkt volledig, dus hier kan geen probleem liggen.
Alle help is welkom.

[ Voor 0% gewijzigd door MueR op 17-09-2011 16:21 . Reden: code tags gewijzigd ]


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 11:55

MueR

Admin Tweakers Discord

is niet lief

XML:
1
<allow-access-from domain="*"/ headers="SOAPAction" secure="true"> 

Dat gaat vast niet goed....

Anyone who gets in between me and my morning coffee should be insecure.


Verwijderd

Topicstarter
MueR schreef op zaterdag 17 september 2011 @ 16:21:
XML:
1
<allow-access-from domain="*"/ headers="SOAPAction" secure="true"> 

Dat gaat vast niet goed....
Gecorrigeerd nu, maar toch nog altijd die error.

  • alwinuzz
  • Registratie: April 2008
  • Laatst online: 08:46
Ik snap niet waarom je beide xml bestanden hebt? Volgens mij heb je alleen clientaccesspolicy.xml nodig. Crossdomain.xml is vziw alleen gebruikt als fallback en wordt dus niet gebruikt als je ook clientaccesspolicy.xml hebt.

Als je nou crossdomain.xml weggooit, en dit gebruikt als clientaccesspolicy.xml: (copypaste van gelinked artikel)

Example of Client Access Policy file
Client Access Policy files give you more granular controls over traffic types, access to resources, and specific HTTP header information. The following example will allow any and all request to this web server from Silverlight:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <!-- Silverlight 3 or higher requires the http-request-headers attribute. -->
    <policy>
      <allow-from http-request-headers="*">
          <domain uri="http://*" />
          <domain uri="https://*" />
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>



Edit: er staat ook "The crossdomain.xml or clientaccesspolicy.xml MUST be located at the root of your web server. If you put the file(s) in a sub-directory where your website files might be, they don’t count and won’t work."

[ Voor 9% gewijzigd door alwinuzz op 17-09-2011 18:17 ]


  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Verwijderd schreef op zaterdag 17 september 2011 @ 16:19:
Ik krijg telkens volgende error als ik mijn Silverlight app uitvoer:
"TargetInvocationException was unhandled by user code".

Ik ben al een ganse dag aan het zoeken waarom en hoe dit te verhelpen...
Heb je ook gekeken naar de InnerException? Het kan ook zijn dat je de view probeert te veranderen vanuit een andere thread (async), dan krijg je namelijk ook een TargetInvocationException. Het lijkt mij daarom zinvol om eerst het probleem duidelijk naar voren te halen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Feanathiel schreef op zaterdag 17 september 2011 @ 22:26:
[...]


Heb je ook gekeken naar de InnerException? Het kan ook zijn dat je de view probeert te veranderen vanuit een andere thread (async), dan krijg je namelijk ook een TargetInvocationException. Het lijkt mij daarom zinvol om eerst het probleem duidelijk naar voren te halen.
Ik ben zelf nog maar wat aan het testen met Silverlight. Heb hier nog geen ervaring mee, maar ga het gebruiken voor eindwerk. Heb dus even zitten zoeken op de innerexception, het de fout blijkt dus toch te liggen bij de serverkant. En eigenlijk was het iets heel doms:

In mijn voorbeeldtest voor de serverkant te testen haalde ik de meegestuurde id parameter op in een index.php file en die stuurde ik door in mijn client.php file, maar in mijn Silverlight app riep ik alleen client.php op, dus die kon de id parameter niet ophalen, vandaar de fout. Heb deze regel verplaatst, en nu lukt het.

Toch bedankt voor de hulp
Pagina: 1