Si la réponse à cette question est oui, alors je ne peux que vous conseiller d'aller sur le blog de Jesse Liberty. En effet, il a posté un petit concours pour tout ceux qui veulent tester leur compétences en terme de débugging.
Comme vous le verrez, cela n'a rien de bien compliqué mais la problématique est intéressante. De plus, Jesse promet de mettre à disposition une vidéo dans laquelle il corrige le bug et explique le "pouquoi du comment" 
Pour en savoir plus, c'est par ici: http://silverlight.net/blogs/jesseliberty/archive/2008/05/01/silverlight-debugging-challenge.aspx
A+
J'ai répondu récemment à une question, sur les forums de Developpez.com, qui était forte intéressante et qui valait bien un petit post sur mon blog.
Pour faire simple, le demandeur était dans le cas suivant:
- Une listbox liée à une liste de personne
- Un attribut personnalisé sur les propriétés de la classe Person
Son besoin était simple: il voulait pouvoir afficher, lors d'un binding, la valeur d'une des propriétés de l'attribut personnalisé. En terme de code, nous avions donc ceci:
public class Person
{
[PersonProperties("LastName : ")]
public string LastName { get; set; }
[PersonProperties("FirstName : ")]
public string FirstName { get; set; }
}
public class PersonCollection : ObservableCollection<Person>
{
}
[global::System.AttributeUsage(AttributeTargets.Property, Inherited = false, AllowMultiple = true)]
sealed class PersonPropertiesAttribute : Attribute
{
public string Header { get; private set; }
public PersonPropertiesAttribute(string header)
{
this.Header = header;
}
}
Il faut à présent remplir notre collection de personne, par exemple lors du chargement de la fenêtre:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
ObjectDataProvider odp = this.TryFindResource("PersonCollectionDS") as ObjectDataProvider;
if (odp != null)
{
PersonCollection pc = odp.Data as PersonCollection;
if (pc != null)
{
pc.Add(new Person() { LastName = "LEBRUN", FirstName = "Thomas" });
pc.Add(new Person() { LastName = "SANTIN", FirstName = "Florent" });
pc.Add(new Person() { LastName = "SENTENAC", FirstName = "Philippe" });
pc.Add(new Person() { LastName = "FURUTA", FirstName = "Mitsuru" });
}
}
}
Maintenant, il faut faire en sorte que, lors du binding, on arrive à accéder à l'attribut "PersonProperties" (et à sa valeur) et à l'afficher. Pour cela, il faut déjà mettre en place le binding, en utilisant un convertisseur auquel on va passer un paramètre:
<TextBlock HorizontalAlignment="Right" Margin="0,17,8,0" VerticalAlignment="Top" Width="126" Height="16" Text="{Binding Path=SelectedItem, Converter={StaticResource GetPersonAttributeConverter}, ConverterParameter=LastName, ElementName=lbPersons, Mode=Default}" TextWrapping="Wrap" x:Name="tbLastName"/>
<TextBlock HorizontalAlignment="Right" Margin="0,52,8,0" VerticalAlignment="Top" Width="126" Height="16" Text="{Binding Path=SelectedItem, Converter={StaticResource GetPersonAttributeConverter}, ConverterParameter=FirstName, ElementName=lbPersons, Mode=Default}" TextWrapping="Wrap" x:Name="tbFirstName"/>
Comme vous pouvez en douter, toute la magie va se passer dans le convertisseur, qui va tout simplement faire un peu de reflection sur l'objet passé en paramètre (un objet de type Person) et accéder aux attributs personnalisés:
public class GetPersonAttributeConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string result = string.Empty;
if (value != null)
{
Person p = value as Person;
if (p != null)
{
var properties = p.GetType().GetProperties();
foreach (var propertyInfo in properties)
{
var attributes = propertyInfo.GetCustomAttributes(typeof(PersonPropertiesAttribute), true);
if (((PersonPropertiesAttribute)attributes.GetValue(0)) != null)
{
string header = ((PersonPropertiesAttribute)attributes.GetValue(0)).Header;
string parameterToUse = parameter as string;
if (parameterToUse != null)
{
if (header.Contains(parameterToUse))
{
switch (parameterToUse)
{
case "LastName":
result = string.Concat(header, p.LastName);
break;
case "FirstName":
result = string.Concat(header, p.FirstName);
break;
default:
break;
}
}
}
}
}
}
}
return result;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
#endregion
}
A l'exécution, le biding est bien mis en place et grâce à la reflection, nous accédons à la valeur des propriétés de notre attribut personnalisé:
Pour ceux qui veulent tester, vous trouverez le code source de la démonstration ici: Source
A+
Voila un moment que je n'avais pas écrit d'articles sur le Web. Je reviens donc avec un nouvel article sur le site TechHeadBrothers:
"Windows Communication Foundation est une technologie très impressionnante qui permet de mettre en place, en quelques lignes de code, une architecture client/serveur. De son coté, Windows Presentation Foundation est la nouvelle technologie de création d'interfaces graphiques. Dès lors, il serait tout à fait possible, et c'est ce que nous allons faire au cours de cet article, d'implémenter une application WPF utilisant un service WCF, afin de tirer parti du meilleur de chacune des technologies."
La suite: Développer une visionneuse d'images avec WPF et WCF
Si vous voulez en savoir plus sur l'utilisation conjointe de WPF et WCF, alors cet article est fait pour vous !
Je tiens à remercier Laurent de m'accueillir parmis les auteurs de son site Web !
Bonne lecture à tous....
A+
En décembre, j'ai eu l'occasion de passer la certification suivante en version Beta:
Microsoft .NET Framework 3.5 ? Windows Presentation Foundation
Je viens d'apprendre que j'avais réussit avec succès cette certification:
Hormis le fait de me vanter de l'avoir réussit (bah oui, faut bien se faire des fleurs de temps en temps
), je voudrais simplement vous souligner le fait que les questions correspondent parfaitement à ce que l'on peut voir dans des développements courants: j'ai été surpris des questions posées car celles-ci pouvaient aller de la question très très technique à des choses beaucoup plus simple.
D'une manière générale, cette certification en s'adresse pas spécialement à des développeurs expérimentés sur la technologie, mais à des débutants/nouveaux !
A+
Ca y est, nous y voila: l'ensemble des MVPs/RD de Winwise est arrivé à Seattle pour le MVP Summit. Vous aurez donc, pendant cette semaine, un ensemble de post de la part de ces personnes (et bien d'autres ;) ):
- Florent Santin
- Matthieu Mezil
- Philippe Sentenac
- Michel Perfertti
- Christian Robert
- Daniel Tizon (RD)
- Gaétan Bouverêt
Pour moi, c'est une première (aussi bien en terme de Summit que de venue aux Etats-Unis) donc j'espère passer de bons moments que je tâcherais de vous raconter si je le peux: stay tuned !
Beaucoup de gens se plaignent des lenteurs d'Outlook. Le dernier en date n'est autre que noter cher Nix qui a carrément finit par abandonner le produit (ct ce post pour plus de détails).
Je viens enfin de découvrir la raison pour laquelle Outlook peut parfois être aussi lent: c'est parce qu'il est fait en .NET. Vous ne me croyez pas ? La preuve en images:
Voila maintenant qui osera dire que .NET est performant ? 
A+
PS: Ce post est à prendre au second degré. En effet, même si je me doute bien qu'un outil comme Microsoft Outlook n'est pas développé en .NET mais plutôt en C++, il n'en reste pas moins que cela soit quelque peut... déroutant 
Dans la version 1.1 Alpha de Silverlight 2, mais également dans la version 1.0, on disposait d'un composant bien pratique pour télécharger des éléments: le Downloader.
Avec la version 2 de Silverlight, ce contrôle n'existe plus mais a été remplacé par un composant nommé WebClient, le même que celui que l'on peut retrouver dans le Framework .NET.
Pour l'utiliser afin de télécharger des fichiers, il n'y a rien de plus simple: il vous suffit de vous abonner à l'évènement OpenReadCompleted et à lancer un appel à la méthode OpenReadAsync, qui va exécuter la requête de manière asynchrone:
WebClient client = new WebClient();
client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
client.OpenReadAsync(new Uri("../Files/Demo.txt", UriKind.Relative));
Vous pouvez remarquer que la méthode prend en paramètre un objet de type Uri qui pointe vers le fichier à télécharger. Vous pouvez aussi vous demander pourquoi avoir utiliser les ".." dans l'adresse du fichier. En fait, n'oubliez pas que le fichier qui va contenir votre application Silverlight, le fichier ".xap", est déployé dans le répertoire ClientBin: il vous faut donc remonter jusqu'à la racine ou, plus simplement, jusqu'à l'emplacement exact du fichier à télécharger.
Il ne nous reste plus qu'à écrire le contenu de la méthode client_OpenReadCompleted:
void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
StreamResourceInfo streamText = new StreamResourceInfo(e.Result, string.Empty);
StreamReader reader = new StreamReader(streamText.Stream);
this.tbText.Text = reader.ReadToEnd();
}
On utilise un objet de type StreamResourceInfo, en lui passant en paramètre le résultat de l'appel à la méthode OpenReadAsync. Cet objet est ensuite utilisé via un StreamReader qui sera manipulé pour afficher le contenu du fichier.
Cette technique est très pratique lorsque l'on doit télécharger des fichiers "uniques" mais dans le cas où l'on souhaite télécharger des archives Zip, il va falloir faire autrement.
La déclaration du WebClient ne change pas, hormis le nom du fichier a télécharger:
WebClient clientZip = new WebClient();
clientZip.OpenReadCompleted += new OpenReadCompletedEventHandler(clientZip_OpenReadCompleted);
clientZip.OpenReadAsync(new Uri("../Files/DemoZip.zip", UriKind.Relative));
La méthode clientZip_OpenReadCompleted, elle, est légèrement différente:
void clientZip_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
StreamResourceInfo streamZip = new StreamResourceInfo(e.Result, string.Empty);
var demoZipFile = Application.GetResourceStream(streamZip, new Uri("DemoZip.txt", UriKind.Relative));
StreamReader reader = new StreamReader(demoZipFile.Stream);
this.tbZip.Text = reader.ReadToEnd();
}
Comme dans la précédente version, on utilise un objet de type StreamResourceInfo. Cependant, alors qu'avant nous avions directement accès au contenu du fichier, ici nous allons devoir récupérer, via la méthode Application.GetResourceStream, un flux vers le fichier qui nous intéresse, au sein de l'archive Zip.
A l'exécution, nous récupèrons bien le contenu de nos 2 fichiers: le premier directement depuis le fichier texte et le second depuis le fichier texte contenu dans l'archive Zip:
Vous pourrez trouver, en pièce jointe à ce post, une application de démonstration de cette technique.
A+
Scott Morrison
, le Program Manager du DataGrid de Silverlight 2, a posté, sur son blog, 2 tutoriaux vraiment très complet sur le fonctionnement et l'utilisation de ce composant dans vos applications Silverlight:
Using The Silverlight DataGrid
Defining Columns for a Silverlight DataGrid
Le moins que l'on puisse dire, c'est que ces articles sont des "must-read" pour tous les développeurs d'applications Silverlight 
A+
Si vous avez déjà commencé à jouer avec Silverlight 2, vous avez sans doute découvert une chose bien pratique: une application Silverlight 2 est capable de se redimensionner automatiquement lorsqu'elle est en cours d'exécution si sa hauteur/largeur est positionnée sur "Auto" plutôt qu'une valeur fixe 
Bien que cela soit très pratique pour les utilisateurs, cela ne s'avère pas très utilisable pour les designers car ceux-ci se retrouve, dans Blend, avec une interface ressemblant à celle-ci:
Afin de corriger cela, et donc de leur permettre de travailler correctement, sachez qu'il est possible de changer la taille du contrôle, en mode design uniquement. Pour cela, rien de plus simple: au niveau de votre élément racine, dans le XAML, ajoutez ce namespace:
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
Puis rajouter les propriétés suivantes:
d:DesignWidth="640" d:DesignHeight="480"
DesignWidth et DesignHeight sont des propriétés utilisées par Expression Blend (et donc non comprises par Visual Studio).
A l'exécution, on obtient bien quelque chose de plus grand:
Voila qui devrait faire plaisir à vos designers !
A+
Je viens tout juste de terminer la lecture du livre "LINQ In Action" de Fabrice Marguerie, Steve Eichert et Jim Wooley
Je dois admettre que je suis très impressionné par ce livre. Non pas par la le niveau technique du livre (je n'en attendais pas moins de la part des auteurs
) mais surtout par la pédagogie employée pour expliquer des concepts qui peuvent, parfois, sembler compliquer/déroutant à des développeurs amateurs ou ne connaissant pas le sujet.
Tout ceux qui ont déjà écrit des livres (ou encore des articles) savent qu'il n'est pas simple d'expliquer et de retranscrire des notions complexes.
Les auteurs de ce livre ont parfaitement réussit ce challenge: il est donc à la fois très technique (n'oubliez pas que LINQ n'est pas une mince affaire) mais très bien expliqué, ce qui le rend d'autant plus intéressant !
Bref, pour tous ceux qui veulent en savoir plus sur les entrailles de LINQ, son fonctionnement, etc... ou bien pour tout ceux qui veulent savoir comment l'utiliser (et bien l'utiliser), alors je ne saurais que trop recommander ce livre !
Bonne lecture à tous
A+
Par mesure de précaution, je préviens qu'il s'agit d'un message à prendre au 36ème degré....
D'après InsideRIA, Microsoft vient d'annoncer une nouvelle intéressante pour tous les développeurs Silverlight.
En effet, la version 2 de Silverlight n'est pas encore sortie en version finale que l'on commence à avoir des informations à propos de la prochaine version, Silverlight 3 (Nom de code: "Silverlight Gold").
Ainsi, il y a fort à parier que cette prochaine version supportera, nativement, la lecture et l'affichage des fichiers SWF (ce format de fichier étant ouvert, il ne devrait pas y avoir de problèmes légaux quand à son utilisation).
Attention, il s'agit d'une information à prendre "avec des pincettes": je n'ai pas encore trouvé la fameuse annonce dont le blog InsideRIA parle. Cependant, si cela s'avérait véridique, il s'agirait d'une nouvelle très très intéressante et très prometteuse....
Si vous avez des informations à ce sujet (confirmation ou infirmation), n'hésitez pas à me laisser un message en commentaire de ce post 
A+
Voici une astuce que j'ai découvert en regardant notre designer utiliser Expression Blend. Dans une application WPF, il a utilisé une police personnalisée, c'est-à-dire une police qui n'est pas en standart sur tous les ordinateurs.
Dès lors, Expression Blend lui a généré le code suivant:
<TextBlock FontFamily="Fonts/#graphicpixel" x:Name="tbCustomFont" />
Et dans le projet Visual Studio sur lequel il travaillait, il s'est retrouvé avec un répertoire nommé "Fonts" comprennant la liste des différents fichiers de polices personnalisées qu'il utilise.
En effet, sur les contrôles d'affichage de texte, il est possible de spécifier la police à utiliser. Dès lors où celle-ci n'est pas présent sur la machine, le plus simple est de déployer la police en même tems que l'application. Pour utiliser cette police, il vous faudra utiliser la syntaxe ci-dessus, c'est-à-dire:
NomDuRépertoireDesPolices/#NomDeLaPolice
Ainsi, à l'exécution, le code XAML suivant:
<Viewbox>
<StackPanel Orientation="Vertical">
<TextBlock x:Name="tbNormalFont" />
<TextBlock FontFamily="Fonts/#graphicpixel" x:Name="tbCustomFont" />
</StackPanel>
</Viewbox>
Associé à ce code-behind:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 1);
timer.Tick += (senderTick, argTick) =>
{
this.tbCustomFont.Text = this.tbNormalFont.Text = string.Concat(DateTime.Now.Hour.ToString(), ":", DateTime.Now.Minute.ToString(), ":", DateTime.Now.Second.ToString());
};
timer.IsEnabled = true;
}
Nous permettent d'obtenir le résultat ci-dessous:
A+
Voila une question très intéressante
En effet, tout le monde connait les possibilités de WPF en terme de design et l'on sait parfaitement que le rendu est vectoriel donc la qualité est vraiment nickel.
A ce titre, il serait dommage de ne pas profiter des capacités de WPF directement au sein de votre application, afin d'offrir une meilleure expérience utilisateur. Ainsi, pourquoi (et comment) ne pas faire comme Expression Blend ou Family.Show et proposer une fonctionnalité de zoom sur l'interface du logiciel ?
Avec WPF, cette technique peut être mise en place très rapidement: en effet, il vous suffit de jouer sur la transformation de type ScaleTranform de votre élément racine:
<Grid>
<ScrollViewer HorizontalScrollBarVisibility="Auto">
<Canvas x:Name="canvas" Background="#FFFFFFFF" Width="300" Height="300">
<Canvas.LayoutTransform>
<ScaleTransform
ScaleX="{Binding Path=Value, ElementName=zoomSlider}"
ScaleY="{Binding Path=Value, ElementName=zoomSlider}"/>
</Canvas.LayoutTransform>
<Button Content="OK" Canvas.Top="100" Canvas.Left="100"/>
</Canvas>
</ScrollViewer>
<Slider x:Name="zoomSlider" Minimum="0.1" Maximum="5" Value="1"/>
</Grid>
Bon développement à tous 
A+
La contrôle PasswordBox est sans doute l'un des plus importants disponible avec le Framework .NET.
Non présent dans Silverlight 2, je m'en suis créé un pour les besoins d'un projet. Pour le faire, j'ai simplement hériter de la classe TextBox: on voit donc que le modèle de développement est le même qu'en WPF (Windows Presentation Foundation) 
Bien sur, ce contrôle n'est pas parfait, en grande partie à cause du fait que le contrôle TextBox ne donne aucune information sur la position du curseur (Caret): sans doute pour la version finale ? 
Quoiqu'il en soit, ce contrôle fonctionne et vous donne une idée de comment tout cela fonctionne.
/// <summary>
/// A control that represent a Password TextBox. As there is no information about the position of the caret,
/// the control is not perfect but all the logic is here.
/// </summary>
public class PasswordBox : TextBox
{
public StringBuilder SecureText { get; private set; }
public PasswordBox()
: base()
{
this.SecureText = new StringBuilder();
this.KeyDown += new KeyEventHandler(PasswordBox_KeyDown);
}
void PasswordBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key != Key.Back)
{
this.SecureText.Append(e.Key.ToString().ToLower());
this.Text = string.Empty;
for (int i = 0; i <= this.SecureText.Length - 1; i++)
{
this.Text += "*";
}
}
else
{
this.SecureText.Remove(this.SecureText.Length - 1, 1);
this.Text.Remove(this.Text.Length - 1, 1);
}
e.Handled = true;
}
}
A+
Et oui, après avoir été accessible en avant première aux abonnés MSDN, le Service Pack 1 de Windows Vista est disponible en téléchargement à l'adresse suivante:
http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID=b0c7136d-5ebb-413b-89c9-cb3d06d12674
On y apprend également que celui-ci est disponible sur Windows Update.
Un conseil: pour avoir installé le SP1 tout de suite après sa mise à disposition sur MSDN, je ne saurais que trop vous conseiller de l'installer car on remarque une nette différence entre avant et après 
A+
Si vous souhaitez en savoir plus sur le développement de contrôles et d'applications avec Silverlight 2, il y a un blog à mettre dans vos bookmarks et à visiter souvent: celui de David Anson
Si vous ne voyez pas de qui il s'agit, David est l'auteur de démonstrations assez impressionnantes faîtes avec Silverlight 1.1. Ainsi, l'auteur des démonstrations Silverlight Airlines (celle qui a vraiment commencé à montrer les possibilités de Silverlight et du code managé) et de Surface version Silverligth, c'est lui 
David travaille toujours sur Silverlight 2 et son blog est une mine d'or pour ceux qui recherchent des informations sur SL2. Ainsi, il nous explique comment il a fait pour développer les contrôles ListBox et ScrollViewer.
De même, il montre comment faire pour migrer des applications WPF (relativement complexes, il faut le dire) en applications Silverlight, avec les corrections de code qui vont bien. Par exemple, il explique comment il a fait pour migrer l'application de visualisation des planètes, réalisé par Beatriz Costa:
En une application Silverlight:
Donc, si vous voulez en savoir plus, en apprendre plus ou bien tout simplement être impressionné, je vous recommande chaudement son blog: http://blogs.msdn.com/delay/default.aspx
A+
Il n'est jamais simple de se rendre compte à quels points une technologie est importante et ce qu'elle peut nous apporter.
Dans le cas de Silverlight 2, c'est un peu la même chose. Afin de vous aider à y voir plus clair, vous pouvez jeter un oeil à cette démo (le "Silverlight in Financials Demonstrator"), qui simule un environnement financier/banquaire et dont l'interface est entièrement faite en SL 2:
Il faut tout de même admettre que le résultat est vraiment impressionnant. Et pour ceux qui voudrait savoir comment utiliser cette démo, il y a un script qui l'accompagne 
Ah oui, cerise sur le gateau: le code source est disponible à cette adresse 
Un grand merci à l'équipe d'Infusion Development (http://www.infusion.com/index.aspx) pour ce travail assez spectaculaire, il faut le dire....
Profitez-en bien !
A+
Microsoft vient de mettre à disposition, via le blog de Mircea Trofin, un ensemble de "Design Guidelines" pour LINQ (Language-Integrated Query). Autrement dit, il s'agit d'un ensemble de bonnes pratique à appliquer lorsque l'on doit développer avec LINQ.
Il s'agit, à ne pas en douter, d'un must read pour tous les développeurs 
Le document en question est visible à cette adresse: http://blogs.msdn.com/mirceat/archive/2008/03/13/linq-framework-design-guidelines.aspx
A+
Peter Blois
, développeur chez Microsoft sur les outils de la gamme Expression, est une personne bien connue de tout ceux qui s'intéresse, de prêt ou de loin à WPF/Silverlight.
En effet, il est l'auteur de nombreux contrôles/fonctionnalité, comme par exemple la gestion du MouseWheel sous Silverlight !
Il vient de "récidiver" et de mettre à disposition un Viewport pour Silverlight, composant très agréable qui permet de faire en sorte que les contrôles déposés sur une Window ou sur un UserControl prenne bien toute la place disponible. Autrement dit, finit les problèmes de redimensionnement à la main 
Vous pouvez en savoir plus à cette adresse: http://blois.us/blog/2008/03/i-had-old-minesweeper-app-that-i-did.html
Et pour ceux qui veulent jeter un oeil au code source de son Viewport, c'est par là: http://blois.us/Silverlight/Minesweeper/Viewbox.cs
Ah oui, et pour une démo de son composant, rendez-vous ici et redimmensionner la fenêtre: vous vous rendrez compte de ce dont il s'agit 
A+
Si vous travaillez avec Silverlight 2 et les Web Services, il est fort possible que vous rencontriez l'erreur suivante:
Ok, je vous l'accorde, ce n'est pas très clair d'autant que pour le moment, la documentation n'est pas très complète....
Voici donc une petite info pour vous aider dans votre debug: vous travaillez avec Silverlight 2 et les Web Services. Cela veut donc dire que vous faîtes des appels "cross-domain": votre exécution s'execute sur l'URL http://mondomaine:1234 et votre Web Service s'execute sur l'URL http://mondomaine:4321.
Silverlight 2 supporte les appels "cross-domain": c'est l'une des grandes nouveautés de cette version. Seulement voila, pour que cela fonctionne, il faut autoriser les appels "cross-domain" au niveau de votre Web Service. Pour cela, un petit tour dans la documentation nous apprend comment faire: il faut placer un fichier clientaccesspolicy.xml à la racine du serveur sur lequel s'exécute le Web Service.
Ce fichier est un simple fichier XML qui contient les informations suivantes:
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from>
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
Un fois ce fichier mis en place, l'appel au Web Service fonctionne correctement: vous n'avez plus d'erreur 
A+
Les 10 derniers blogs postés
-
XBOX : XBOX Live ou l'interdiction de changer de pays par
Blog Technique de Romelard Fabrice le il y a 44 minutes
-
Un de plus ches les MAA par
Louis-Guillaume Morand le il y a 3 heures et 5 minutes
-
Comment monter un serveur Subversion sous Windows en 2 minutes et 1 clic par
Julien Chable le il y a 4 heures et 35 minutes
-
[VB.NET] Les Custom Events par
Le blog de FremyCompany le il y a 7 heures et 3 minutes
-
Changements au niveau du Garbage Collector dans ".NET 3.5" par
CoqBlog le il y a 14 heures et 42 minutes
-
IIS et ASP.net 3.5 : avoir la bonne version du framework par
Atteint de JavaScriptite Aiguë [Cyril Durand] le il y a 14 heures et 57 minutes
-
James Whittaker parle de Software Testing par
Etienne Margraff le il y a 21 heures et 16 minutes
-
[CSS3] A quoi ressemblera box-shadow ? par
Le blog de FremyCompany le il y a 21 heures et 17 minutes
-
Besoin d'icones/images pro pour vos sites et applications ? par
Nix's Blog le il y a 22 heures et 48 minutes
-
EMPLOI : WebCast à visionner absolument pour répondre à différentes questions qu'on peut avoir sur le marché français par
Blog Technique de Romelard Fabrice le 05-11-2008, 14:49