WCF RIA question de déploiement de service
-
18-09-2019 - |
Question
J'ai un exemple d'application de silverlight très simple. J'ai ajouté un service de domaine avec un modèle d'entité qui a une seule entité. L'application client charge simplement toutes les lignes de l'entité au démarrage. Quand je lance ceci sur ma boîte de développement, il fonctionne comme prévu. Cependant, quand je me déplace à notre serveur de test, je reçois une exception disant que la méthode que je fais appel ne peut pas être trouvé (opération de chargement a échoué pour la requête « GetCTCStation ». Le serveur distant a renvoyé une erreur. NotFound.). Quand je visitai la communication client / serveur plus étroitement avec Fiddler j'ai découvert que la demande va http: // [serveur url] /ClientBin/SilverlightApplication7-Client-Web-CTCService.svc/binary . J'ai ajouté le service de domaine à la racine du projet web, donc je ne comprends pas pourquoi le client recherche dans le répertoire ClientBin. Il est évidemment pas là. Qu'est-ce que je fais mal ici? Je ne l'ai jamais eu de problèmes avec la version preview Juillet de RIA.
Il est relatif, mais qui est traitée dans le fichier Generated_Code automatiquement. Et il n'y a rien dans le webconfig à configurer. J'ai utilisé les paramètres par défaut lors de la création d'un service de domaine. J'ai essayé de mettre explicitement le uri lors de l'instanciation du service et même exception a eu lieu.
La solution
Après une longue lutte et d'essayer de nombreuses options différentes j'ai finalement trouvé la solution. Ce message a été touche:
En fait, on n'inluded de quelques dll dans le dossier bin lors de la publication du projet. Assurez-vous que les sous références dll suivants sont configurés correctement (Assurez-vous que System.ComponentModel.DataAnnotations pointe C: \ Program Files \ Microsoft \ SDKs RIA Services \ v1.0 \ Libraries \ Server \ System.ComponentModel. DataAnnotations.dll ):
System.ComponentModel.DataAnnotations et tous les dll qui commence par System.Web doit avoir « Copier locale » sur true.
Générez le projet et publier à nouveau. Pour moi a résolu le problème.
Je voudrais remercier tous ceux qui ont contribué à la solution de ce problème (dans ce fil et d'autres).
Autres conseils
Si vous inspectez l'erreur sur cette demande de service (ce qui est normal la façon dont vous le voyez), qu'est-ce que le contenu de Fiddler dire? NotFound est generit dans le plug-in, mais Fiddler est probable que vous montre un HTTP 500 ou quelque chose avec un peu plus en détail dans le corps de la réponse.
1) Qu'est-ce que IIS-vous sur deploing? Si <7 Vous avez besoin correctif
2) Inclure tous vos assemblages RIA (Set Copie locale => True) Y compris:
System.Web.Ria
System.Web.DomainServices. (il y a 4 d'entre eux en fonction de ce que vous utilisez)
3) Cela peut être le résultat de votre noeud dans votre application ASPNET étant réglé sur Windows, mais votre site est configuré pour Anonymous dans IIS. Pour la plupart, en changeant simplement le noeud en mode = » Forms » supprimera cette erreur et vous permettre de continuer. Pour d'autres, si votre configuration IIS est configuré pour utiliser les deux Auth intégré ainsi que Anonymous, vous aurez envie de décocher un d'entre eux dans le cadre Sécurité de répertoire pour le site dans la console de gestion IIS.
Microsoft recommande sur MSDN que Ria services être installé sur le serveur.
Il est recommandé que les services RIA être installé sur le serveur Web qui hébergera votre application.
Il y a un truc ici qui probablement ont vu la plupart des gens répugnent à cette solution. L'installation liste un certain nombre de conditions préalables par défaut que vous ne souhaitez généralement à installer sur le serveur.
Conditions préalables Consultez
Les composants requis suivants sont manquants:
- Microsoft Visual Studio 2010 ou plus récent ou Visual Web Developer 2010
- Exprimez Microsoft Silverlight 4 Runtime Developer ou plus récent Microsoft
- Silverlight 4 SDK ou kit de développement Microsoft Silverlight 5
L'exécution de la avec l'argument de ligne de commande SERVER=TRUE
contournera cette vérification.
msiexec / i RiaServices.msi SERVER = TRUE
Je recommande également que vous utilisez cette solution car il ne nécessite pas de configuration particulière pour un ensemble spécifique de dll qui peut changer dans les futures versions. En outre, le processus de publication sera un peu plus rapide parce que ces fichiers ne seront pas inclus.
Notez également que vous pouvez utiliser le Web Platform Installer pour installer des services de Ria sur un serveur en utilisant le WCF RIA services serveur d'installation pour Net Framework 4.0 qui a le même effet que le commutateur de SERVER=TRUE
. Malheureusement, cette version 1 est uniquement et service pack manquant 2.
est ma solution de cas pour régler « Copie locale » Propriété des ensembles suivants de Références Dossier de WebSite « True »:
System.ComponentModel.DataAnnotations
System.ServiceModel.DomainServices.EntityFramework
System.ServiceModel.DomainServices.Hosting
System.ServiceModel.DomainServices.Hosting.OData
System.ServiceModel.DomainServices.Server
System.Web.ApplicationServices
System.Web
System.Web.Extensions
System.Web.Mobile
System.Web.Services
Si tout est correct après la prochaine reconstruction de ces ensembles seront copiés dans le dossier bin de votre projet.
Ce qui est bon à portée de main toute configuration d'IIS 7, je ne l'ai pas Perform.
couru dans ce problème et (RIA renvoie « Not Found »), mais dans mon cas, il a fini par être que ma requête était de retour plus de lignes que par MaxItemsInObjectGraph permis. Ma résolution temporaire a été d'ajouter .Take (5000) pour réduire le jeu de résultats, mais une résolution permanente exige l'extension de la MaxItemsInObjectGraph comme référencé ci-dessous. Espérons que cela aide quelqu'un d'autre ...
<behaviors>
<behavior name="MyServiceBehavior">
<dataContractSerializer maxItemsInObjectGraph="3" />
</behavior>
</behaviors>
Gardez à l'esprit que la valeur par défaut est Int32.MaxValue ou 2147483647
Avez-vous vérifié la partie d'adresse de votre configuration de liaison? On dirait qu'il utilise une adresse relative.
Pour moi, ce fut que l'authentification a été réglé pour ne pas « Anonymous » dans IIS. Je Fiddler pour obtenir le produit URL RIA SCV, puis ouvert l'URL dans un navigateur. Le message était tout à fait explicite.
Je devais autoriser l'accès anonyme, redémarrez le pool d'applications et tout fonctionnait comme prévu.
WCF RIA Services de VS 2008 erreurs de déploiement
Il y a beaucoup de messages agréables sur le net et le meilleur semble être ici (Merci Tim)
Bien que tous les messages que j'ai trouvé étaient utiles en quelque sorte, la solution finale dans mon cas était la chaîne de connexion inappropriée DB. Bien que la chaîne VS généré DB a bien fonctionné dans les VS, je ne pouvais pas le déployer sur mon serveur QA jusqu'à ce que je parés à être comme ceci:
add name="myEntities" connectionString="metadata=res://*/ReviewsModel.csdl|res://*/ReviewsModel.ssdl|res://*/ReviewsModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=dataSource;Initial Catalog=intitalCatalog;User ID=userID;Password=password;"" providerName="System.Data.EntityClient"