我试图在按钮点击时从Silverlight应用程序中使用JSON服务。但是在阅读JSON服务URL时,它会抛出以下异常。
System.Security.SecurityException ---> System.Security.SecurityException: Security error.
at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClassa.<EndGetResponse>b__9(Object sendState)
at System.Net.Browser.AsyncHelper.<>c__DisplayClass4.<BeginOnUI>b__0(Object sendState)
--- End of inner exception stack trace ---
at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
at System.Net.WebClient.OpenReadAsyncCallback(IAsyncResult result)
以下是我的代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
WebClient client = new WebClient();
client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
string url = "http://www.javascriptkit.com/dhtmltutors/javascriptkit.json";
client.OpenReadAsync(new Uri(url));
}
private void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
StreamReader reader = new StreamReader(e.Result);
}
请帮我修理
我在web文件夹中添加了clientaccesspolicy.xml。但当Fiddler被检查时,它说,&#34;在此服务器上找不到请求的URL /clientaccesspolicy.xml&#34; 。但我可以从我的网址访问这个xml。
<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="*"/>
<domain uri="http://*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
答案 0 :(得分:0)
在允许连接到网络资源之前,Silverlight运行时将尝试从承载网络资源的域下载安全策略文件。有两种不同的方法用于下载安全策略,这取决于连接请求是来自WebClient还是HTTP类,或者连接请求是否来自套接字。
如果连接请求是从WebClient或HTTP类到跨域站点,则Silverlight运行时会尝试使用HTTP协议下载安全策略文件。 Silverlight运行时首先尝试下载名为&#34; clientaccesspolicy.xml&#34;的Silverlight策略文件。在使用HTTP协议的请求目标域的根目录。
如果&#34; clientaccesspolicy.xml&#34;如果未找到(Web请求返回404状态代码),使用意外的mime类型返回,无效的XML或具有无效的根节点,则Silverlight运行时将发出对Flash策略文件的请求,名称&#34; crossdomain.xml&#34;在所请求的目标域的根目录下,使用HTTP协议。
不允许对策略文件进行HTTP重定向。策略文件的重定向将导致SecurityException拒绝访问。