Видимо, я совершил типичную ошибку noob, я осмелился заблокировать основной поток / пользовательский интерфейс. Кажется, Silverlight хочет избежать этого любой ценой и отклоняет мой запрос, немедленно возвращая ноль. Хорошо, но было бы неплохо бросить соответствующее исключение вместо того, чтобы возвращать значение, которое документация даже не упоминает как возможность?
В любом случае, вот исправленный код:
private void Application_Launching(object sender, LaunchingEventArgs e)
{
var request = WebRequest.Create("http://www.microsoft.com");
var asyncResult = request.BeginGetResponse(
ar =>
{
using (var response = request.EndGetResponse(ar))
using (var responseStream = response.GetResponseStream())
using (var reader = new StreamReader(responseStream))
{
string content = reader.ReadToEnd();
}
}, null);
}