我正在使用Google的GeoCode API来返回用户在搜索框中输入的地址的纬度/经度值。我的代码似乎是正确的,但我遇到了安全异常问题。当我使用Fiddler检查呼叫时,我可以看到正在发送的呼叫,但是clientaccesspolicy.xml存在问题。
似乎我的WPF应用程序要求Google拥有clientaccesspolicy.xml但Google没有。因此,我可能需要代理才能调用Google的API。任何想法或解决方法?
码
private void RequestResponseHandler(IAsyncResult asyncResult)
{
HttpWebResponse response = null;
Stream responseStream = null;
try
{
response = (HttpWebResponse)request.EndGetResponse(asyncResult);
responseStream = response.GetResponseStream();
var xdoc = XDocument.Load(responseStream);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
答案 0 :(得分:1)
据我了解,您在Silverlight应用程序中使用此代码,这对于跨域请求非常挑剔。在执行任何请求之前,Silverlight运行时会尝试在目标服务器上找到clientaccesspolicy.xml
(在您的情况下为maps.googleapis.com),如果失败,它会尝试查找crossdomain.xml
。显然,服务器没有这样的文件,因此运行时抛出SecurityException。
作为解决方法,您可以将请求代理到Google Maps API: