1

我已经创建了 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.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 在 System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state) 在 System. Net.WebClient.GetWebResponse(WebRequest 请求,IAsyncResult 结果)在 System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult 结果)}

堆栈跟踪 :

" 在 System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)\r\n 在 System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\r\n 在 System.Net.WebClient.GetWebResponse(WebRequest请求,IAsyncResult 结果)\r\n 在 System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult 结果)"

当我谷歌这个错误:

我知道这是跨域 url 的问题,所以我必须在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)
        {

        }
4

1 回答 1

0

确保 clientaccesspolicy.xml 包含您在浏览器中使用的域。如果您在本地调试,这可能是 localhost。clientaccesspolicy.xml 必须位于托管服务的域的根目录中。如果您在本地托管服务以及 Silverlight 项目,请确保可以从您的 Bowser 访问该文件,http://localhost/clientaccesspolicy.xml 或者https://localhost/clientaccesspolicy.xml取决于您调用该服务的方式。否则,将 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>
于 2014-05-17T13:22:58.153 回答