我写一个小的Silverlight应用程序只是尝试的Silverlight。 我的想法是让一个小应用程序来检查,如果网站是在线。 它通过用户输入URL和我的应用程序检查它每隔5分钟运行时间。
但是,当过我做的WebRequest我得到下面的安全异常。 阅读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.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)在monitor.Home.doCheck( IAsyncResult的一)}