2010-08-18 10 views
0
un service

j'ai suivi le tutoriel ici: http://www.silverlight.net/learn/tutorials/sqldatagrid-cs/Silverlight ne peut pas parler à RIA


RÉPONSE: Quand je courais cette chose dans le débogueur, il commençait vers le haut sur le port 16048. Entre-temps , ServiceReferences.ClientConfig avait l'adresse de point de terminaison en utilisant le port 15459. Aucun indice pourquoi il a fait cela, mais une fois que je l'ai changé afin qu'il accède au service sur le port 16048, ça allait. J'avais remarqué que les ports différaient, mais avaient supposé qu'il utilisait un port différent pour le service pour une raison saine. Et nous savons tous qui nous faisons un cul de quand supposons, ne nous ...

Conclusion: Projet de service clic-droit dans l'Explorateur de solutions, Propriétés | Web | Port spécifique


Dans le tutoriel, vous créez une chose simple Silverlight XAP, créer un service RIA dans la même solution, et appeler le service de Silverlight. Je l'ai exécuté dans VS2010 avec le serveur Web intégré. Lorsque l'appel asynchrone au service se termine, l'erreur _error du résultat est définie sur System.ServiceModel.CommunicationException (voir ci-dessous).

Je ne saurais trop insister sur le fait que le service et l'application Silverlight sont tous deux sur la même machine, le même ordinateur physique assis sur mon bureau. J'ai ajouté crossdomain.xml et clientaccesspolicy.xml

Le tutoriel date de 2008 et semble être obsolète à certains égards. Le truc de RIA semble pratique, mais Silverlight ne le supporte-t-il tout simplement pas? Est-ce que MS a déjà abandonné WCF et/ou RIA pour autre chose? Existe-t-il une autre nouvelle façon d'obtenir des données d'un serveur vers Silverlight? Qu'est-ce qu'un service de domaine? Est-ce mieux? Est-ce la dernière grande ou la prochaine? Comment quelqu'un peut-il suivre?

e._error {System.ServiceModel.CommunicationException: Une erreur survenue en essayant de faire une demande d'URI 'http://localhost:15459/Service1.svc'. Cela peut être dû à la tentative d'accès à un service dans un domaine inter-domaine sans avoir mis en place une stratégie inter-domaine ou une stratégie inappropriée pour les services SOAP . Vous devrez peut-être contacter le propriétaire du service pour publier un fichier de stratégie inter-domaines et pour vous assurer qu'il autorise l'envoi d'en-têtes HTTP liés à SOAP. Cette erreur peut également être provoquée en utilisant des types internes dans le proxy de service Web sans utiliser l'attribut InternalsVisibleToAttribute. S'il vous plaît voir l'exception interne pour plus de détails. ---> System.Security.SecurityException ---> System.Security.SecurityException: erreur de sécurité. à System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse (IAsyncResult asyncResult) à System.Net.Browser.BrowserHttpWebRequest. <> c__DisplayClass5.b__4 (Objet sendState) à System.Net.Browser.AsyncHelper. <> c__DisplayClass2.b__0 (Object sendState) --- Fin de trace de pile d'exception interne --- à System.Net.Browser.AsyncHelper.BeginOnUI (SendOrPostCallback beginMethod, objet état) à System.Net.Browser.BrowserHttpWebRequest .EndGetResponse (IAsyncResult asyncResult) à System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse (IAsyncResult résultat) --- Fin de trace de pile d'exception interne --- à système.ServiceModel.AsyncResult.End [TAsyncResult] (résultat IAsyncResult) à System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End (SendAsyncResult résultat) à System.ServiceModel.Channels.ServiceChannel.EndCall (Action String, Object [] outs, résultat IAsyncResult) à System.ServiceModel.ClientBase 1.ChannelBase 1.EndInvoke (String nomMéthode, Object [] args, le résultat IAsyncResult) à SilverlightApplication1.ServiceReference1.Service1Client.Service1ClientChannel.EndGetITEM_THINGs (IAsyncResult résultat) à SilverlightApplication1.ServiceReference1 .Service1Client.SilverlightApplication1.ServiceReference1.IService1.EndGetITEM_THINGs (IAsyncResult résultat) à SilverlightApplication1.ServiceReference1.Service1Client.OnEndGetITEM_THINGs (IAsyncResult résultat) à System.ServiceModel.ClientBase`1.OnAsyncCallCompleted (IAsyncResult résultat)} {System.Exception System.ServiceModel.CommunicationException}

Répondre

1

À partir du message d'erreur, je suppose que votre fichier clientaccesspolicy.xml n'est pas à l'emplacement correct (doit être dans le répertoire racine du service) ou n'est pas configuré pour autoriser l'accès au service. Consultez HTTP Communication and Security with Silverlight pour plus d'informations sur l'accès aux services avec Silverlight.

Microsoft n'a pas abandonné WCF et/ou RIA.

+0

En fait, il s'est avéré que je pouvais me débarrasser entièrement de clientaccesspolicy.xml. Le problème n'était pas lié à ce genre de choses. –

Questions connexes