我已经创建了Web服务,我正在使用silverlight应用程序调用。
我的内部异常如下:
{System.Security.SecurityException ---> System.Security.SecurityException:安全性错误。 在System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) 在System.Net.Browser.BrowserHttpWebRequest。<> c_ DisplayClassa.b _9(Object sendState) 在System.Net.Browser.AsyncHelper。<> c_ DisplayClass4.b _0(Object sendState) ---内部异常堆栈跟踪结束--- 在System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod,Object state) 在System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 在System.Net.WebClient.GetWebResponse(WebRequest请求,IAsyncResult结果) 在System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)}
堆栈追踪:
在System.Net.WebClient的System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\ r \ n的System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod,Object state)\ r \ n中“。 GetWebResponse(WebRequest请求,IAsyncResult结果)\ r \ n在System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)“
当我谷歌这个错误时:
我发现这是跨域网址的问题,所以我必须在 C:\ inetpub \ wwwroot 下添加clientaccesspolicy.xml和crossdomain.xml文件。
仍然得到同样的错误:
让我知道如何解决此错误。
我使用的代码如下:
System.Uri uri = new System.Uri("https://[localhost]/CustomerPortalService12/AddAccount/" + "AccountName");
var result = "";
try
{
var webClient = new WebClient();
webClient.DownloadStringCompleted +=webClient_DownloadStringCompleted;
webClient.DownloadStringAsync(uri);
}
catch (Exception ex)
{
var wtf = ex.Message;
}
}
}
void webClient_DownloadStringCompleted(object sender, System.Net.DownloadStringCompletedEventArgs e)
{
}
答案 0 :(得分:0)
确保clientaccesspolicy.xml包含您在浏览器中使用的域。如果您在本地调试,这可能是localhost。 clientaccesspolicy.xml必须位于托管服务的域的根目录。如果您正在托管本地服务以及Silverlight项目,请确保可以从http://localhost/clientaccesspolicy.xml
或https://localhost/clientaccesspolicy.xml
的bowser访问该文件,具体取决于您如何调用该服务。否则,请将localhost替换为该服务所在的域。
您的clientaccesspolicy.xml应该类似于:
<?xml version="1.0" encoding="UTF-8"?>
-<access-policy>
-<cross-domain-access>
<!--May have multiple elements-->
-<policy>
-<allow-from http-request-headers="*">
<domain uri="https://localhost"/>
</allow-from>
-<grant-to>
<resource include-subpaths="true" path="/"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>