Buenas,

La verdad que mas que "gatitos que muerden". Yo pondría "mana de despropósitos" Y voy a ver si me explico.

El primero es utilizar Silverlight, en esto creo que estamos todos de acuerdo:) Y no precisamente porque no tenga continuidad sino porque siempre ha sido una cagada...

El segundo es utilizar WebClient y todos sus sucedáneos y me explico.

Parece que el problema es FireFox cuando no lo es, sino el utilizar WebClient y esas cosas que suele inventar Micro para ahorrarnos trabajo y que no hacen más que convertirnos en zombies en el mundo web.

Si a eso le sumo que la documentación es mala, pues pasa lo que te ha pasado a ti que por simplificar y por hacer las cosas fáciles(que yo creo que difíciles) entramos en perder un montón de horas por culpa de no escribir 4 lineas que además están presentes desde creo que la versión 1 del framework.

Olvidate de WebClient y utilizalo solo para las demos que mira como sin tocar y sin hacer nada de nada y sin que sea culpa de los browser se puede modificar el "accept".

public partial class MainPage : UserControl
{
public MainPage()
{
WebRequest.RegisterPrefix("http://",
System.Net.Browser.WebRequestCreator.BrowserHttp);
WebRequest.RegisterPrefix("https://",
System.Net.Browser.WebRequestCreator.BrowserHttp);
InitializeComponent();
GetData();
}
private void GetData()
{
Uri apiUri = new Uri(Application.Current.Host.Source, "/api/TableCounts/");

//Make the request
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(apiUri);
request.Accept = "application/json";
request.BeginGetResponse(new AsyncCallback(ProcessData), request);
}
private void ProcessData(IAsyncResult ar)
{
HttpWebRequest request = (HttpWebRequest)ar.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar);

using (StreamReader sr = new StreamReader(response.GetResponseStream(),
System.Text.Encoding.UTF8))
{
//Resto de código

}
}
}

No se ni porque he abierto para probar yo un proyecto Silverlight, voy a lavarme las manos y quitarme los microbios xDDDD.