2009-12-08 7 views
8

Ich habe eine sehr einfache Beispiel Silverlight-Anwendung. Ich habe einen Domänenservice mit einem Entitätsmodell hinzugefügt, das über eine Entität verfügt. Die Client-App lädt beim Start alle Zeilen der Entity. Wenn ich das auf meiner Entwicklungsbox ausführe, funktioniert es wie erwartet. Wenn ich es jedoch auf unseren Testserver verschiebe, bekomme ich eine Ausnahme, die besagt, dass die Methode, die ich anrufe, nicht gefunden werden kann (Ladeoperation für Abfrage 'GetCTCStation' fehlgeschlagen. Der entfernte Server hat einen Fehler zurückgegeben. NotFound.). Als ich die Client/Server-Kommunikation genauer mit Fiddler inspizierte, fand ich heraus, dass die Anfrage an http://[server url] /ClientBin/SilverlightApplication7-Client-Web-CTCService.svc/binary geht. Ich habe den Domain-Service zum Root des Webprojekts hinzugefügt, daher verstehe ich nicht, warum der Client im ClientBin-Verzeichnis danach sucht. Es ist offensichtlich nicht da. Was mache ich hier falsch? Ich hatte nie Probleme mit der Juli-Preview-Version von RIA.WCF RIA Service Bereitstellungsproblem


Es ist relativ, aber das wird in der Generated_Code-Datei automatisch behandelt. Und es gibt nichts in der Webconfig zu konfigurieren. Ich habe die Standardeinstellungen beim Erstellen eines Domain-Service verwendet. Ich habe versucht, das uri beim Instanziieren des Dienstes explizit zu setzen, und die gleiche Ausnahme trat auf.

Antwort

9

Nach einem langen Kampf und dem Ausprobieren vieler verschiedener Optionen habe ich endlich die Lösung gefunden. Dieser Beitrag war der key:

Grundsätzlich waren einige DLLs nicht im Ordner bin enthalten, wenn Sie das Projekt veröffentlichen. Stellen Sie unter Referenzen sicher, dass die folgenden DLLs ordnungsgemäß eingerichtet sind (Stellen Sie sicher, dass System.ComponentModel.DataAnnotations auf C: \ Programme \ Microsoft SDKs \ RIA-Dienste \ v1.0 \ Libraries \ Server \ System.ComponentModel.DataAnnotations verweist. dll):

System.ComponentModel.DataAnnotations und jede DLL, die mit System.Web beginnt, muss "Copy Local" auf True festgelegt haben.

Erstellen Sie das Projekt und veröffentlichen Sie es erneut. Das hat das Problem für mich behoben.

Ich möchte allen danken, die zur Lösung dieses Problems beigetragen haben (in diesem Thread und anderen).

+0

Die Datei System.ComponentModel.DataAnnotations.dll ist in diesem SDK nicht mehr vorhanden. Sollten wir diese Antwort abstimmen? – YeahStu

+1

Ich bin auf Silverlight 5 und Ria Services 1.0 SP2 und diese Antwort ist noch gültig. In der Tat, bitte @ Dragan oder jeder, der kann, dies als eine Antwort markieren. –

0

Haben Sie den Adressbereich Ihrer Bindungskonfiguration überprüft? Es sieht so aus, als ob es eine relative Adresse benutzt.

1

Wenn Sie den Fehler auf dieser Serviceanforderung untersuchen (was normal ist, wie Sie es sehen), was sagt der Inhalt in Fiddler? NotFound ist im Plugin generit, aber Fiddler zeigt Ihnen wahrscheinlich einen HTTP 500 oder etwas mit mehr Details im Antworttext.

+0

In meinem Fall erhalte ich einen Fehler 401. Versucht die Kopie lokale Option auf alle benötigten Dateien, aber immer noch kein Glück ... irgendwelche Tipps? – Entrodus

1

1) Auf welchen IIS plündern Sie? Wenn < 7 Sie benötigen Hotfix

2) Fügen Sie alle Ihre RIA Baugruppen (Set Copy Local => True) Einschließlich:

System.Web.Ria

System.Web.DomainServices. (davon 4, je nachdem, was Sie verwenden)

3) Dies kann ein Ergebnis von Ihrem Knoten in Ihrer ASPNET-Anwendung auf Windows festgelegt sein, aber Ihre Website wird auf Anonym in IIS festgelegt. Bei den meisten wird der Fehler einfach durch Ändern des Knotens in mode = "Forms" behoben und Sie können fortfahren.Wenn Ihre IIS-Konfiguration für die Verwendung von Integrated Auth und Anonymous konfiguriert ist, sollten Sie in der Einstellung "Verzeichnissicherheit" für die Site in der IIS-Verwaltungskonsole eines deaktivieren.

0

WCF RIA Services VS 2008 Bereitstellungsfehler

viele nette Nachrichten im Netz Es gibt und die beste scheint here (Danke Tim)

Obwohl alle Buchungen ich in irgendeiner Weise nützlich waren gefunden zu sein Die endgültige Lösung in meinem Fall war die ungeeignete DB-Verbindungszeichenfolge. Obwohl der VS erzeugte Zeichenfolge DB hat gut funktioniert innerhalb VS, konnte ich es zu veröffentlichen meinen QA-Server nicht, bis ich es getrimmt so sein:

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 VS 2008 Bereitstellungsfehler Here ist die Lösung, die Sie suchen Sie nach einem Download-Beispiel und überprüfen Sie Ihren selbst live WCF RIA (Vs2008) Dienst.

1

In meinem Fall Lösung war „Copy Local“ Eigentum von folgenden Baugruppen von Website Verweisen auf Set-Ordner auf „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 

Wenn alles korrekt ist, übernächsten diese Baugruppen Wiederaufbau wird Binärordner kopiert werden von Ihrem Projekt.

Was ist gut, jede nützliche Konfiguration von IIS 7 habe ich nicht durchgeführt.

1

Auch in dieses Problem (RIA gibt "Not Found"), aber in meinem Fall endete es, dass meine Abfrage mehr Zeilen zurückgab als über maxitemsinobjectgraph erlaubt. Meine vorübergehende Lösung bestand darin, .Take (5000) hinzuzufügen, um die Ergebnismenge zu reduzieren, aber für eine permanente Auflösung muss der maxitemsinobjectgraph wie unten angegeben erweitert werden. Hoffe, das hilft jemand anderes aus ...

<behaviors>  
<behavior name="MyServiceBehavior">   
    <dataContractSerializer maxItemsInObjectGraph="3" />  
</behavior> 
</behaviors> 

Beachten Sie, dass der Standardwert ist Int32.MaxValue oder 2.147.483.647

MSDN - maxItemsInObjectGraph

MSDN - Int32.MaxValue

0

Für mich war es dass die Authentifizierung in IIS nicht auf "Anonym" festgelegt wurde. Ich benutzte Fiddler, um die generierte RIA SCV URL zu erhalten und öffnete dann die URL in einem Browser. Die Nachricht war ziemlich eindeutig.

Ich musste nur anonymen Zugriff erlauben, den Anwendungspool neu starten und alles funktionierte wie erwartet.

1

Microsoft empfiehlt unter MSDN, dass Ria-Dienste auf dem Server installiert werden.

Es wird empfohlen, RIA Services auf dem Webserver zu installieren, auf dem Ihre Anwendung gehostet wird.

Es gibt einen Trick hier die wahrscheinlich die meisten Leute weg von dieser Lösung gesehen haben scheuen. Die Installation listet standardmäßig eine Reihe von Voraussetzungen auf, die Sie normalerweise nicht auf dem Server installieren möchten.

Voraussetzungen prüfen

die folgenden erforderlichen Komponenten fehlen:

  • Microsoft Visual Studio 2010 oder neuer oder Visual Web Developer 2010
  • Express Microsoft Silverlight 4 Entwickler Runtime oder neuer Microsoft
  • Silverlight 4 SDK oder Microsoft Silverlight 5 SDK

Ausführen des installation mit dem Kommandozeilenargument SERVER=TRUE wird diese Überprüfung umgehen.

msiexec/i RiaServices.msi SERVER = TRUE

ich auch, dass man mit dieser Lösung würde empfehlen, da es keine spezielle Konfiguration für einen bestimmten Satz von DLLs benötigt, die in Zukunft ändern Versionen. Außerdem wird der Veröffentlichungsprozess etwas schneller sein, da diese Dateien nicht enthalten sind.

Beachten Sie auch, dass Sie die Web Platform Installer können Ria Services auf einem Server mit dem ‚WCF RIA Services-Server installieren für .Net Framework 4.0‘, die die gleiche Wirkung wie die SERVER=TRUE Schalter installieren. Leider ist dies nur Version 1 und es fehlt Service Pack 2.