Astoria Silverlight Client Failing with FireFox 3.0
Hi all,
By now , anyone running a SIlverlight application Astoria Silverlight Client library in Firefox 3.0 would have seen a weird error about charsets.
This blog post will describe the error and how to work-around it .
Consider the following query :
DataServiceQuery<Customers> customerQuery = from cus in context.Customers
where cus.ID =='ALFKI'
select cus;
AsyncCallback ac = iasyncResult =>{
DataServiceQuery<Customers> cusQuery = iasyncResult.AsyncState as DataServiceQuery<Customers>;
QueryOperationResponse<Customer> response = cusQuery.EndExecute(iasyncResult); <-- Exception Thrown here
}
customerQuery.BeginExecute(ac,customerQuery);
When this code runs in Firefox 3.0 , the highlighted line throws the exception,
Error Message : Character set 'iso-8859-1' is not supported.
Stack Trace :
at System.Data.Services.Client.HttpProcessUtility.EncodingFromName(String name)
at System.Data.Services.Client.HttpProcessUtility.MediaType.SelectEncoding()
at System.Data.Services.Client.HttpProcessUtility.ReadContentType(String contentType, String& mime, Encoding& encoding)
at System.Data.Services.Client.DataServiceContext.GetMaterializer(Type elementType, String contentType, Func`1 response, Func`4 create)
at System.Data.Services.Client.DataServiceRequest.Materialize[TElement](DataServiceContext context, String contentType, Func`1 response)
at System.Data.Services.Client.DataServiceRequest`1.Materialize(DataServiceContext context, String contentType, Func`1 response)
at System.Data.Services.Client.DataServiceContext.EndExecute[TElement](IAsyncResult asyncResult)
What is this error ?
When we recieve the ATOM response from the server , we need to read the stream of content in the charset present in the Accept-charset header. The server does not set the Accept-Charset header and replays what the client sent. The normal Accept-Charset header sent to the server from the SL client looks like this ..
Accept-Charset: UTF-8
Now , in FireFox 3.0 , the Accept-Charset header , even though we explicitly set it to be the above , whats sent to the server is ..
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
And the Server responds back with the same charset and we try to read the content with this char-set.
Unfortunately , the charset ISO-8859-1, is not supported by the underlying Platform i.e SIlverlight.
and hence we error out
How do I fix this for now ?
Follow these instructions on changing your browser settings to work around the issue
- Type about:config in the Firefox browser's address bar.
- Navigate through a dialog box and check “I’ll be careful”.
- In the Page’s Search box , type : “intl.charset.default” .
- Double click on the entry that turns up , and set the value to “utf-8” .
Hope this helps.If you still face problems , open a thread on the Astoria Forums and we will try to help out.
Comments
- Anonymous
June 29, 2008
PingBack from http://wordnew.acne-reveiw.info/?p=4031