tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
1093
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Mirc Mirc ist offline Rookie
    Registriert seit
    Aug 2011
    Beiträge
    8
    Hey ich will ein DataGrid in Silverlight mit Daten aus einer Datenbank füllen.

    Die daten will ich mir per Code holen und nicht per DataSource.
    Ich habe jetzt schon ne lange Zeit gegoogelt, dabei habe ich folgende Ergebnisse festgestellt:
    Silverlight selber kann nicht die Daten aus der Datenbank holen. Man braucht einen WebService. Ich benutze Visual Studio 2010 und Silverlight 4.
    Meine Frage ist nun wie richte ich mir einen WebService ein so das ich aus der Silverlight Anwendung drauf zugreifen komme. Bzw auf die Daten zugreifen kann

    Nun habe ich einen Service angelgt der folgende Funktion enthält:
    Code :
    1
    2
    3
    
    public ICollection CreateDataSource(){
    //hier werden die daten geholt
    }
    Aber wie binde ich den Service ein?
    Wenn ich ihn in Visual Studio 2010 einbinden will, sagt der mir das ein Fehler aufgetreten ist.

    Muss ich ein Assembly hinzufügen? Oder sonst noch was hinzufügen?

    Das kann ja nicht so kompliziert sein wenn es dazu so wenig gibt?!
    MFG

    Mirc
    Geändert von Mirc (10.11.11 um 14:01 Uhr)
     

  2. #2
    Mirc Mirc ist offline Rookie
    Registriert seit
    Aug 2011
    Beiträge
    8
    Ich habe es geschafft den Service einzubinden, der Fehler war anscheinend das der mit der Einbindung nicht zufrieden war, wenn man den Service und die aspx datei im Selben Projekt hat. Nun habe ich den Service in einem extra Project.
    Allerdings kommt nun der nächste Fehler.
    Da ich eigentlich nur 3 Werte benötige will ich mir ein Array holen.
    Wie rufe ich die Service Methoden in der Silverlight Application auf?
    Nehmen wir als beispiel die Standart Methode getData in dem Service:

    Code :
    1
    2
    3
    4
    
            public string GetData(int value)
            {
                return string.Format("You entered: {0}", value);
            }
    Die ist auch schon im Interface registriert, also muss man da weiter nichts machen.
    Nun will ich den String mir in der Silverlight Code Behind datei holen.

    Dort gibt es nur:
    Code :
    1
    
    ServiceReference1.GetDataCompletedEventArgs
    Und ich weiß nun nicht wie ich an die Methode komme die ich eigentlich aufrufen will. Also gedacht hätte ich folgendes:
    Code :
    1
    
    String s=ServiceReference1.GetData(value);

    Hat einer Damit schon mal gearbeitet?

    Ich denke an den Simplen Beispiel sollte es am besten zu erklären sein
     

  3. #3
    Mirc Mirc ist offline Rookie
    Registriert seit
    Aug 2011
    Beiträge
    8
    Hey ich bin wieder ein stück weitergekommen.
    Code :
    1
    2
    3
    
    ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
    client.GetDataCompleted += new EventHandler<ServiceReference1.GetDataCompletedEventArgs>(client_getDataComplete);
    client.GetDataAsync(1);
    Man muss einen EventHandler hinzufügen und über einen Asynchronen aufruf die Methode aufrufen.
    Der EventHandler:
    Code :
    1
    2
    3
    4
    
    void client_getDataComplete(object sender, ServiceReference1.GetDataCompletedEventArgs e)
            {
                String temp = e.Result;
            }
    Das sollte nun das gewünschte ergebniss liefern. Tut es leider nicht. Bei e.Result scheint er nicht weiterzumachen.
    Hat jetzt jemand vllt eine Idee?

    Ich habe mir mal e.Error ausgeben lassen.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    System.ServiceModel.CommunicationException: An error occurred while trying to make a request to URI 'http://localhost:1511/Service1.svc'. This could be due to attempting to access a service in a cross-domain way without a proper cross-domain policy in place, or a policy that is unsuitable for SOAP services. You may need to contact the owner of the service to publish a cross-domain policy file and to ensure it allows SOAP-related HTTP headers to be sent. This error may also be caused by using internal types in the web service proxy without using the InternalsVisibleToAttribute attribute. Please see the inner exception for more details. ---> System.Security.SecurityException ---> System.Security.SecurityException: Security error.
       at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
       at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState)
       at System.Net.Browser.AsyncHelper.<>c__DisplayClass4.<BeginOnUI>b__1(Object sendState)
       --- End of inner exception stack trace ---
       at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
       at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
       at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)
       --- End of inner exception stack trace ---
       at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
       at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
       at System.ServiceModel.ClientBase`1.ChannelBase`1.EndInvoke(String methodName, Object[] args, IAsyncResult result)
    Das liefert mir e.Error wenn das jemanden weiterhilft. Ich such selber weiter

    MFG
    Geändert von Mirc (14.11.11 um 14:34 Uhr)
     

  4. #4
    Mirc Mirc ist offline Rookie
    Registriert seit
    Aug 2011
    Beiträge
    8
    So die Letzte sache für heute hoffe ich...
    Kann es sein das ich nicht auf den WebService zugreifen kann?
    Auf den entwicklungsrechner ist leider kein IIS installiert könnte die damit zusammenhängen?
     

  5. #5
    Mirc Mirc ist offline Rookie
    Registriert seit
    Aug 2011
    Beiträge
    8
    Der WebService und die Seite sollten den gleichen Port benutzen dann scheint es zu klappen
     

Ähnliche Themen

  1. Exception beim Zugriff vom Oracle auf Webservice
    Von anaya im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 09.06.10, 12:15
  2. Silverlight und WebService
    Von BeEm im Forum .NET Web und Kommunikation
    Antworten: 2
    Letzter Beitrag: 29.09.08, 17:26
  3. Zugriff auf DLL in einem Webservice
    Von flat_eric im Forum .NET Web und Kommunikation
    Antworten: 0
    Letzter Beitrag: 14.09.08, 18:32
  4. ystem.IO.IOException bei Webservice Zugriff
    Von jma im Forum .NET Web und Kommunikation
    Antworten: 1
    Letzter Beitrag: 03.03.08, 15:48
  5. Zugriff auf Business Logic mit Webservice und Servlet
    Von _Bruce im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 28.09.05, 01:28