2010-06-14 8 views
1

J'ai l'opération suivante pour accueillir ma politique d'accès client dans mon service WCF:Comment puis-je obtenir l'accès à la stratégie d'accès client de mon service WCF à partir de la racine?

[OperationContract] 
[WebGet(UriTemplate = "/clientaccesspolicy.xml")] 
XElement RetrieveClientAccessPolicy(); 

public XElement RetrieveClientAccessPolicy() 
{ 
    String policy = @"<?xml version=""1.0"" encoding=""utf-8""?> 
        <access-policy> 
         ... 
        </access-policy>"; 

    return XElement.Parse(policy); 
} 

Lorsque je tente de me connecter à mon service de mon application silverlight, je reçois une erreur, car il ne trouve pas le politique d'accès client. Il cherche ici:

http://MyServer/clientaccesspolicy.xml

Quand je butiner dans IE, je reçois un 404. Cependant, je peux trouver le fichier clientaccesspolicy.xml si je passe en revue ici:

http://MyServer/server/clientaccesspolicy.xml

Comment puis-je obtenir mon opération pour rendre le fichier de stratégie d'accès client accessible depuis la root, et pas à partir de ce répertoire (le serveur est le nom du service)?

+0

Est-ce pour Silverlight 3 ou Silverlight 4? Le comportement est différent selon la version. Silverlight 3 vous permet d'héberger le fichier ClientAccessPolicy sur un port dédié (qui peut être un service WCF), dont Silverlight 4 exige qu'il soit à la racine sur le port 80. –

Répondre

1

Je suppose que vous n'utilisez pas IIS pour héberger le service puisque vous essayez de renvoyer le clientaccesspolicy.xml via un appel WCF.

Dans le cas d'un service WCF auto-hébergé, je pense que vous allez avoir à mettre en place un point de terminaison de service et d'un contrat pour votre appel RetrieveClientAccessPolicy() dans votre App.config. Ce service aurait une baseAddress de http://localhost où votre service principal aurait une adresse de base de http://localhost/server.

+0

En effet, c'est un service auto-hébergé. Je vais donner un coup de feu. –

+0

A travaillé parfaitement. Merci! –