Я создаю веб-приложение Silverlight 4.0 для нашей интрасети, которое подключается к серверу через REST для получения данных.Я использую Visual Studio 2010.
Я использую следующий код в методе для выполнения запроса:
var wc = new WebClient();
const string uri = "http://server/api/statistics.svc/overall/";
wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
wc.OpenReadAsync(new Uri(uri, UriKind.Absolute));
Мой обработчик события OnReadCompleted:
void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
var buffer = new byte[e.Result.Length];
e.Result.Read(buffer,0,(int)e.Result.Length);
var xmlstr = buffer.Aggregate(String.Empty, (current, t) => current + (char) t);
// Do something with xmlstr...
}
Моя проблема возникает при попытке запустить приложение.Исключение выдается на первой строке в обработчике события wc_OpenReadCompleted и имеет следующие сведения:
TargetInvocationException: An exception occurred during the operation, making the result invalid. Check InnerException for exception details.
Внутреннее исключение:
System.Security.SecurityException: Security error.
Моя служба REST не использует никакой аутентификации.
Я создал файл clientaccesspolicy.xml со следующими настройками:
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/api/statistics.svc/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
Ваша помощь очень важна!
Спасибо,
Джеффри Кевин Прай
ОБНОВЛЕНИЕ
Я не указал / api / в моем XML-файле.Проблема решена.
Спасибо!