Kommunikation mit WCF-Service (CrossDomain.xml)
-
Guten Morgen,
ich habe eine Silverlight WebSite die mit einem WCF-Service kommunizieren soll. Beide - sowohl die Seite als auch der Dienst - werden über den IIS bei mir lokal gehostet.
Der Dienst stellt Methoden bereit, die mitunter Dateizugriffe auf den Server ermöglichen sollen.
Das Problem dabei ist, dass ich beim Aufruf einer solchen Methode folgende Fehlermeldung erhalte:Fehler beim Senden einer Anforderung an den URI "[...]Service.svc". Ursache ist möglicherweise, dass ohne die entsprechende domänenübergreifende Richtlinie oder mit einer nicht für SOAP-Dienste geeigneten Richtlinie domänenübergreifend auf einen Dienst zugegriffen wurde. Möglicherweise müssen Sie sich an den Besitzer des Dienstes wenden, damit eine domänenübergreifende Richtliniendatei veröffentlicht und das Senden von sich auf SOAP beziehenden HTTP-Headern zugelassen wird. Dieser Fehler kann auch durch Verwendung von internen Typen im Webdienstproxy ohne das InternalsVisibleToAtrribute-Attribut verursache werden. Weitere Details finden Sie in der inneren Ausnahme.
Ich habe nun gelesen, dass ich dafür eine ClientAcessPolicy.xml bzw. CrossDomain.xml benötige. Ich habe versucht - beide - direkt im Root meines Virtual Directorys (welches die WebSite UND den Service enthält) zu hinterlegen; ohne Erfolg.
An anderen Stellen habe ich gelesen, dass auch zusätzlich eine Methode im Service enthalten sein muss:
[ServiceContract] public interface IService { [OperationContract] [WebGet(UriTemplate = "ClientAccessPolicy.xml")] Message ProvidePolicyFile(); } public class Service : IService { public System.ServiceModel.Channels.Message ProvidePolicyFile() { return Message.CreateMessage ( MessageVersion.None, "", XmlReader.Create ( File.Open ( "ClientAcessPolicy.xml", FileMode.Open ) ) ); } }
Ich hoffe ihr könnt mir helfen. Langsam drehe ich hier nämlich durch
-
Da sind sie wieder, meine beiden Lieblinge clientaccesspolicy.xml und crossdomain.xml.
Wie man sie in den Griff bekommt, ist beispielsweise hier beschrieben.
-
Hast DU schon mal den Webserver neu gestartet.
War bei mir auch so.
Neustart des Webservers, Webservice aktualisiert und schon hat es funktioniert.
ROOT des Webservers != ROOT der Domaine.