有關網絡的信息有問題或根本沒有信息。Silverlight 5第一次使用Web API 2失敗[clientaccesspolicy.xml]
我嘗試通過庫使用託管在不同服務器(localhost:/ 9000)上的Web API:Silverlight 5項目中的HttpClient(localhost:/ 8080)。
的細節是,與WebClient的作品完美,因爲你得到了「clientaccesspolicy.xml」文件之前,所謂的服務做(讓我解釋):
WebClient client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
client.Headers["Accept"] = "application/json";
client.DownloadStringAsync(new Uri("http://localhost:9000/api/Orders"));
return ordersList;
並非如此,HttpClient的第一嘗試失敗:「TaskCanceledException」因時間,一次(由小提琴手)完成的動作,然後得到完美的:cap.xml,和方法調用的第二次嘗試作品,如果以JSON格式的Web API。
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(@"http://localhost:9000/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
try
{
client.Timeout = TimeSpan.FromMilliseconds(15000);
var response = await client.GetStringAsync("api/Orders").ConfigureAwait(false);
return JsonConvert.DeserializeObject<IEnumerable<ClassOrders>>(response);
}
catch (HttpRequestException h)
{
Console.WriteLine(h.Message);
}
catch (TimeoutException t)
{
Console.WriteLine(t.Message);
}
catch (TaskCanceledException c)
{
Console.WriteLine(c.Message);
}
}
ConfigureAwait(false); //I may return if the asynchronous method fails (not frozen in subthread)
在HTTPClient示例中,URI指向8080而不是9000 – Kar
@Kar,API託管在「9000」(端口示例)和WebApp -cliente-「8080」中。示例:http://webapi.com和客戶SL5 http://MyApp.com 兩者都是單獨託管的。如果你在代碼中是正確的,它已被糾正。謝謝。 – 1antares1