In meiner Silverlight-Anwendung verwende ich einen Dienstverweis auf einen wcf-Dienst. Nachdem ich dieses Projekt auf meinem Test-IIS bereitgestellt habe, konnte ich keine .config-Datei sehen, in der alle Endpunktinformationen gespeichert sind. Diese ServiceReferences.ClientConfig ist im xap-Paket enthalten. Wie würde ich es dann auf dem Server des Kunden bereitstellen? Ich brauche eine Möglichkeit, den Endpunkt dort zu konfigurieren. Wie machen Sie das?
Antworten
Zu viele Anzeigen?Anstatt zu versuchen, die Bearbeitung der Clientconfig-Datei in der XAP zu unterstützen, gibt es einen anderen Ansatz.
Fügen Sie die Adresse des Webservice-Endpunkts zu den Silverlight InitParams in der HTML-Seite hinzu, die die Silverlight-Anwendung hostet. Vielleicht setzen Sie die InitParams dynamisch über ASP.NET. Verwenden Sie diese Adresse programmatisch, wenn Sie den clientseitigen Service-Proxy erstellen.
Eine andere Möglichkeit ist, davon auszugehen, dass sich der Webdienst immer in einem relativen Verzeichnis zur Hosting-Seite befindet. Ich benutzte etwas wie:
new Uri(HtmlPage.Document.DocumentUri, new Uri("./MyService/MyService.svc", UriKind.Relative));
Die Kombination beider Optionen funktioniert gut, wenn die InitParams fehlen, verwende ich einen relativen Pfad zum bekannten Speicherort (hilfreich bei der Bereitstellung/Produktion). Wenn die IntiParams einen Endpunkt haben, verwende ich diesen (hilfreich beim Debuggen/Testen).