Я пишу небольшое приложение Silverlight, чтобы попробовать Silverlight. Моя идея - сделать небольшое приложение, которое проверяет, работают ли веб-сайты. Он работает, когда пользователь вводит URL, а мое приложение проверяет его работоспособность каждые 5 минут.
Но когда я делаю веб-запрос, я получаю исключение безопасности ниже. Чтение http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest(VS.95).aspx указывает на то, что silverlight не разрешает кросс-доменное соединение. Так нет ли способа заставить мою идею работать в silverlight?
Пример кода:
WebRequest testHTTP = null;
try
{
testHTTP = WebRequest.Create(serverToCheck);
}
catch (UriFormatException ufe)
{
try
{
testHTTP = WebRequest.Create("http://" + serverToCheck);
}
catch (UriFormatException ufe1)
{
MessageBox.Show("Invalid server address");
}
}
if (testHTTP != null)
{
testHTTP.BeginGetResponse(new AsyncCallback(doCheck), testHTTP);
}
void doCheck(IAsyncResult a)
{
try
{
HttpWebRequest req = (HttpWebRequest)a.AsyncState;
HttpWebResponse res = (HttpWebResponse)req.EndGetResponse(a);
Dispatcher.BeginInvoke(() => HTTPStatus.Content = "OK");
}
catch (Exception ex)
{
//handle exception
}
}
Исключение:
{System.Security.SecurityException ---> System.Security.SecurityException: ошибка безопасности.
в System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse (IAsyncResult asyncResult)
в System.Net.Browser.BrowserHttpWebRequest. <> c__DisplayClass5.b__4 (объект sendState)
в System.Net.Browser.AsyncHelper. <> c__DisplayClass2.b__0 (объект sendState)
--- Конец внутренней трассировки стека исключений ---
в System.Net.Browser.AsyncHelper.BeginOnUI (SendOrPostCallback beginMethod, состояние объекта)
в System.Net.Browser.BrowserHttpWebRequest.EndGetResponse (IAsyncResult asyncResult)
at monitor.Home.doCheck (IAsyncResult a)}