22
Silverlight en cross domain problemen
Toen ik begon met spelen met Silverlight liep ik al snel tegen een probleem aan dat uiteindelijk het cross domain probleem bleek te zijn. Omdat een collega van mij tegen dezelfde problemen aanliep en hier ook tijd mee is kwijtgeraakt even een snelle post met want informatie over het onderwerp.
We beginnen met een filmpje dat al een goede uitleg geeft.
En dan nog een linkje naar: Hosting cross-domain Silverlight applications (XAP)
Daarnaast nog een simpele tip, als je een silverlight applicatie hebt draaien op een pc en daarmee toegang wil krijgen tot een webservice op een andere pc, dan kan het zijn dat je ook een cross domain policy nodig hebt. Als je bijvoorbeeld verbinding wil maken met een service via netTcpBinding dan moet je een policyfile aanmaken die aangeeft welke poorten mogen worden benaderd vanuit een silverlight applicatie. Andere snelle (tijdelijke) oplossing is om de silverlight applicatie OOB (Out Of Browser) te draaien, vergeet dan niet “Require elevated trust when running outside the browser” aan te vinken. Zonder OOB zul he in het geval van netTcpBinding een policy provider moeten hebben draaien op poort 943.
Bij een http binding service kun je de volgende interface met functie toevoegen aan je service:
[ServiceContract]
public interface IClientAccessPolicy
{
[OperationContract, WebGet(UriTemplate = "/clientaccesspolicy.xml")]
Stream GetPolicy();
}System.IO.Stream IClientAccessPolicy.GetPolicy()
{// TODO: Modify the string below to set the desired cross-domain policy
string result = @"<?xml version=""1.0"" encoding=""utf-8""?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers=""*"">
<domain uri=""http://*""/>
</allow-from>
<grant-to>
<resource path=""/"" include-subpaths=""true""/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>";WebOperationContext.Current.OutgoingResponse.ContentType = "application/xml";
return new MemoryStream(Encoding.UTF8.GetBytes(result));
}
Er zijn ook templates beschikbaar online (via New Project –> Online templates), hier kun je zoeken op b.v. Silverlight Self-Hosted WCF.

Geen opmerkingen.