Affichage des articles dont le libellé est Silverlight Error. Afficher tous les articles
Affichage des articles dont le libellé est Silverlight Error. Afficher tous les articles

Silverlight - Service References - Error while attempting to find services

Mais qu'elle est donc cette erreur !?

"An error occured while attempting to find services at 'http://localhost/ServiceLogger.svc'"

Contexte de l'erreur

Je cherche à faire des logs avec Log4Net depuis une application Silverlight. J'ai créé une "Business Application Silverlight" hostée par une application ASP.NET. Je développe mon service de Log dans BusinessApplicationLog4Net.Web et par l'intermédiaire d'un "Service Reference", je donnerai accès aux services de Log dans mon application Silverlight (ou du moins je l'espère) :

ASP.NET qui host un WCF Service pour une application Silverlight
Dans l'application Silverlight, je fais "Add Service Reference ..."

Siverlight hosted application - Add Service Reference
Mais au moment de découvrir les Services mis à disposition par l'application ASP.NET, avec Siverlight une erreur survient :

Siverlight - Add Servcice Reference ... - An error occured while attempting to find services
Comme je l'ai déjà indiqué et que lorsque l'on utilise les Services du code est généré il faut donc cleaner rebuilder mais rien n'y fait !

Solution ?

Dans le fichier ASP.NET Web.config :

  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="false" 
                               multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

Je propose de mettre aspNetCompatibilityEnabled à false. Pourquoi ? Tout simplement parce que j'ai cherché et trouver cette préconisation, également en regardant le détail de cette erreur :

Silverlight - Service Reference - AspNetCompatibility Error
Cette fois mon Service est enfin découvert :

Siverlight - Add Servcice Reference ... - Mon service est enfin découvert
Tout de même cela me parait curieux, je devrais rendre mon Hosting Services Environment incompatible avec ASP.NET pour l'utiliser dans Siverlight ...

Je lance l'application :

Siverlight - aspNetCompatibilityEnabled à false
Quelle belle erreur ! Toutes ces applications demandent que l'utilisateur soit ou non authentifié et le service d'authentification de Silverlight dans ce cas ne reconnait plus mon utilisateur.

C'est perdu !

Conclusion

Et c'est bien dommage car en câblant un bouton sur la View Home de mon application Silverlight :

\\BusinessApplicationLog4Net\BusinessApplicationLog4Net\Views\Home.xaml.cs :

        private void buttonMakeLog_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            var log = new ServiceLogger.ServiceLoggerClient();
            log.LogMessageAsync("click on button produced log on server");

            textBox.Text = "log " + nbLogs.ToString();
            nbLogs++;
        }

Si je clique sur "Ok" et sur mon mon bouton en ayant pris soin de mettre un point d'arrêt dans l'application ASP.NET :

Point d'arrêt dans l'application ASP.NET qui hoste le Service Logger
Clique sur le bouton Make Logs
Clique sur le bouton pour déclencher la méthode buttonMakeLog_Click() de l'application Silverlight qui déclenche un log à travers le service et dans l'application ASP.NET.

Le point d'arrêt est bien déclenché
Je ne dois pas être si loin, je vais continuer à trouver ...

Et comme je suis un fou furieux, en tous cas un curieux et maintenant que le code de mon service est généré dans Silverlight, je remets aspNetCompatibilityEnabled à true et j'exécute cette fois l'erreur est la suivante :

dans :

\\BusinessApplicationLog4Net\BusinessApplicationLog4Net\Service References\ServiceLogger\Reference.cs

j'obtiens :

Cette fois le Log ne sort plus de Silverlight

Solution

Il faut utiliser l'attribut de la Class :

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class ServiceLogger : IServiceLogger

Pour que cela fonctionne.



Silverlight Installation Error

Vous avez un souci pour installer Silverlight sur votre plateforme Windows 2003 Server et c'est normal car c'est un processus assez tortueux. D'abord le "Web Platforme installer" a planté sans rien signaler pour installé Silverlight. En suite vous avez installé MS Visual Web Developer 2010 Express et au moment de créer votre première application Silverlight, voici le résultat qu'affiche votre Visual Studio :

Erreur à la création d'un projet Silverlight avec Web Developer
Pas de problème vous cliquez sur le lien, et vous tenter d'installer Silverlight 5 :

Installation de Silverlight 5
Mais le processus s'arrête brusquement avec l'erreur suivante :

Impossible d'installer Silverlight
Et c'est parti pour un redémarrage ...
Une fois la machine redémarrer le processus d'installation se déroule correctement vous pouvez alors créer votre première application Silverlight mais ou moment de choisir 3, 4 ou 5 vous n'avez pas le choix de 5 alors que vous pensez avoir installer Silverlight 5 ...

Installation de Silverlight 3.0 et 4.0
Et effectivement le SDK Silverlight 5.0 n'est pas installé ... J'ai simplement installé le runtime ... Pour en terminer avec Silverlight 5.0 je vous conseille la lecture du post suivant Ici.

En me trompant d'installe j'obtiens l'erreur suivante :

Install Silverlight 5 Tools Error on 2010 SP1
Le Silverlight 5 Tools for Visual Studio 2010 SP1 est téléchargeable Ici.

Et sinon l'installation continue :
Installation du Silverlight 5 Tools for Visual Studio 2010 SP1
Et se termine par :

Silverlight 5 Tools for Visual Studio 2010 SP1
Et cette fois le SDK Silverlight 5.0 est bien installé :

Installation du SDK Silverlight 5.0 for Visual Studio 2010 SP1