2009-12-08 9 views
8

J'ai un exemple d'application silverlight très simple. J'ai ajouté un service de domaine avec un modèle d'entité qui a une entité. L'application cliente charge simplement toutes les lignes de l'entité au démarrage. Quand je l'exécute sur ma boîte de développement, cela fonctionne comme prévu. Cependant, quand je le déplace vers notre serveur de test, je reçois une exception disant que la méthode que j'appelle est introuvable (l'opération de chargement a échoué pour la requête 'GetCTCStation' Le serveur distant a renvoyé une erreur. Lorsque j'ai inspecté la communication client/serveur de plus près avec Fiddler, j'ai découvert que la demande va à http://[server 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 le cherche dans le répertoire ClientBin. Ce n'est évidemment pas là. Qu'est-ce que je fais mal ici? Je n'ai jamais eu de problèmes avec la version d'aperçu de RIA de juillet.Problème de déploiement WCF RIA Service


C'est relatif, mais cela est géré automatiquement dans le fichier Generated_Code. 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 définir explicitement l'URI lors de l'instanciation du service et la même exception s'est produite.

Répondre

9

Après une longue lutte et en essayant de nombreuses options différentes, j'ai finalement trouvé la solution. Ce poste était le key:

Fondamentalement, certains dll n'étaient pas inclus dans le dossier bin lors de la publication du projet. Assurez-vous sous Références que les dll suivantes sont configurées correctement (Assurez-vous que System.ComponentModel.DataAnnotations pointe vers C: \ Program Files \ Microsoft SDK \ Services RIA \ v1.0 \ Libraries \ Server \ System.ComponentModel.DataAnnotations. dll):

System.ComponentModel.DataAnnotations et chaque DLL commençant par System.Web doit avoir "Copy Local" défini sur true.

Générez le projet et publiez à nouveau. Cela a réglé le problème pour moi.

Je tiens à remercier tous ceux qui ont contribué à la solution de ce problème (dans ce fil et d'autres).

+0

Le fichier System.ComponentModel.DataAnnotations.dll n'existe plus dans ce SDK. Devrions-nous voter cette réponse? – YeahStu

+1

Je suis sur Silverlight 5 et Ria Services 1.0 SP2 et cette réponse est toujours valide. En fait, s'il vous plaît @Dragan ou quelqu'un qui peut, marquer cela comme une réponse. –

0

Avez-vous vérifié l'adresse de votre configuration de liaison? On dirait qu'il utilise une adresse relative.

1

Si vous inspectez l'erreur sur cette demande de service (ce qui est normal comme vous le voyez), que dit le contenu de Fiddler? NotFound est generit dans le plugin, mais fiddler vous montre probablement un HTTP 500 ou quelque chose avec plus de détails dans le corps de la réponse.

+0

Dans mon cas, j'obtiens une erreur 401. J'ai essayé l'option copie locale sur tous les fichiers nécessaires mais toujours pas de chance ... des conseils? – Entrodus

1

1) Sur quel IIS avez-vous recours? Si < 7 Vous avez besoin Hotfix

2) Inclure tous vos assemblages RIA (Set copie locale => True) Y compris:

System.Web.Ria

System.Web.DomainServices. (4 d'entre eux en fonction de ce que vous utilisez)

3) Cela peut être dû au fait que votre noeud dans votre application ASPNET est défini sur Windows, mais que votre site est défini sur Anonyme dans IIS. Pour la plupart, changer simplement node en mode = "Forms" supprimera cette erreur et vous permettra de continuer.Pour les autres, si votre configuration IIS est configurée pour utiliser à la fois Integrated Auth et Anonymous, vous devez désélectionner l'un d'entre eux dans le paramètre Directory Security du site dans la console de gestion IIS.

0

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 here (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 DB inappropriée. 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 j'Équilibré à être comme ça:

add name="myEntities" connectionString="metadata=res://*/ReviewsModel.csdl|res://*/ReviewsModel.ssdl|res://*/ReviewsModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=dataSource;Initial Catalog=intitalCatalog;User ID=userID;Password=password;&quot;" providerName="System.Data.EntityClient" 
0

WCF RIA Services de erreurs de déploiement VS 2008 Here est la solution que vous cherchez un exemple de téléchargement et vérifiez votre service WCF RIA (Vs2008).

1

Dans ma solution de cas était de définir la propriété « Copie locale » des assemblées suivant des références de WebSite Dossier « 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 bien une configuration pratique d'IIS 7 que je n'ai pas effectuée.

1

Ran dans ce problème aussi bien (RIA renvoie "non trouvé"), mais dans mon cas il s'est avéré que ma requête retournait plus de lignes que permises via maxitemsinobjectgraph. Ma résolution temporaire était d'ajouter .Take (5000) pour réduire le jeu de résultats, mais une résolution permanente nécessite l'extension du 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 2.147.483.647

MSDN - maxItemsInObjectGraph

MSDN - Int32.MaxValue

0

Pour moi, il était que l'authentification n'a pas été définie sur "Anonyme" dans IIS. J'ai utilisé Fiddler pour obtenir l'URL RIA SCV générée, puis j'ai ouvert l'URL dans un navigateur. Le message était assez explicite.

Je devais juste autoriser l'accès anonyme, redémarrer le pool d'applications et tout fonctionnait comme prévu.

1

Microsoft recommande sur MSDN que Ria Services soit installé sur le serveur.

Il est recommandé d'installer les services RIA sur le serveur Web qui hébergera votre application.

Il y a un truc ici qui va probablement avoir vu la plupart des gens répugnent à cette solution. L'installation répertorie par défaut un certain nombre de prérequis que vous ne souhaitez généralement pas installer sur le serveur.

Préalables Vérifier

Les composants requis suivants sont manquants:

  • Microsoft Visual Studio 2010 ou plus récent ou Visual Web Developer 2010
  • express Microsoft Silverlight 4 Runtime Developer ou plus récent Microsoft
  • Silverlight 4 SDK ou Microsoft Silverlight 5 SDK

Exécution du installation avec l'argument de ligne de commande SERVER=TRUE contournera cette vérification.

msiexec/i RiaServices.msi SERVEUR = 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 à l'avenir versions. En outre, le processus de publication sera légèrement plus rapide car ces fichiers ne seront pas inclus.

Notez également que vous pouvez utiliser le Web Platform Installer pour installer des services 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 SERVER=TRUE. Malheureusement, il s'agit uniquement de la version 1 et il manque le Service Pack 2.

Questions connexes